Xcode屏幕图片截取

#import "ViewController.h"

@interface ViewController ()
//显示图片
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
//pan手指刚开始移动的位置
@property (nonatomic, assign) CGPoint startPoint;
//pan手势结束的位置
@property (nonatomic, assign) CGPoint endPoint;
//剪切的半透明视图
@property (nonatomic, strong) UIView *clipView;
@end
@implementation ViewController

//懒加载clipView,在拖拽的过程中只创建一次,避免视图上创建过多无用的view
- (UIView*)clipView
{
    if (_clipView == nil) {
        _clipView = [[UIView alloc] init];
        _clipView.backgroundColor = [UIColor blackColor];
        _clipView.alpha = 0.5;
        [self.view addSubview:_clipView];
    }
    return _clipView;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    //给控制器添加一个pan手势
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    [self.view addGestureRecognizer:panGesture];

}

- (void)pan:(UIPanGestureRecognizer*)panGesture
{

    if (panGesture.state == UIGestureRecognizerStateBegan) { //panBegin

        //startPoint保存pan手势的开始位置
        CGPoint startPoint = [panGesture locationInView:self.view];
        self.startPoint = startPoint;

    } else if (panGesture.state == UIGestureRecognizerStateChanged) { //PanChanged

        CGPoint endPoint = [panGesture locationInView:self.view];
        self.endPoint = endPoint;
        CGFloat clipViewX = self.startPoint.x;
        CGFloat clipViewY = self.startPoint.y;
        CGFloat clipViewW = self.endPoint.x - self.startPoint.x;
        CGFloat clipCiewH = self.endPoint.y - self.startPoint.y;
        self.clipView.frame = CGRectMake(clipViewX, clipViewY, clipViewW, clipCiewH);

    } else if (panGesture.state == UIGestureRecognizerStateEnded) { //panEnded

        //图片裁剪,生成一张新的图片
        //1.开启上下文
        UIGraphicsBeginImageContextWithOptions(self.imageView.frame.size, NO, 0);

        //2.设置裁剪区域
        UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.clipView.frame];

        [path addClip];

        //3.获取上下文
        CGContextRef ctx = UIGraphicsGetCurrentContext();

        //4.把控件上的内容渲染到上下文中
        [self.imageView.layer renderInContext:ctx];

        //5.生成一张新的图片
        self.imageView.image = UIGraphicsGetImageFromCurrentImageContext();

        //6.关闭就上下文
        UIGraphicsEndImageContext();

        //7.移除clipView
        [self.clipView removeFromSuperview];

    }
}

@end

屏幕图片剪切效果演示:

时间: 2024-10-10 02:35:45

Xcode屏幕图片截取的相关文章

c++截取屏幕图片并保存(函数代码实现)

<strong> //获取桌面窗体的CDC CDC *pdeskdc = GetDesktopWindow()->GetDC(); CRect re; //获取窗体的大小 GetDesktopWindow()->GetClientRect(&re); CBitmap bmp; bmp.CreateCompatibleBitmap(pdeskdc , re.Width() , re.Height()); //创建一个兼容的内存画板 CDC memorydc; memorydc

spring 文件上传 + 图片缩放 + 图片截取(头像功能)

实现图片上传 用户必须能够上传图片,因此需要文件上传的功能.比较常见的文件上传组件有Commons FileUpload,这里我们选择Commons FileUpload. 首先是页面的form表单设置,记住要配method和enctype属性哦!! <form action="upload.do" method="post"            enctype="multipart/form-data">           &l

功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析(转)

功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析 SimpleCropView是github上第一个第三方开源的图片修剪截取利器,功能强大,设计良好.我个人认为SimpleCropView比附录文章1介绍的cropper更为强大和完备,但也更为复杂,如果是简单的应用场景,那么cropper也是一个不错的选择,SimpleCropView则适应图片裁剪截取复杂的需求任务.SimpleCropView在github上的项目主页是:https://githu

android图片截取的两种方式

    文章主要提供android系统上拍照图片截取和图片 选择截取 两种方式,适用于app头像选择等环境. 拍照截取 打开相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent,"自定义"); 截图 Intent intent = getCropImageIntent(data); startActivityForResult(intent, "

使用JQuery插件Jcrop进行图片截取

Jcrop插件本身并不含有图片截取功能,它仅仅是在前端层面构建一套截取动画效果并产生4个坐标点,插件使用者将这4个坐标点传回至服务器接口上进行截取操作.其优点是具有较高的通用性.浏览器兼容性(IE6+)及稳定性高,缺点是无法适用于手机H5开发(无图片缩放.拖拽效果). 最新版的Jcrop已更新到v3.0+了,本文基于 v0.9.12,由于这版本之间API及使用方式差异非常大,故本文不具备 Jcrop v3.0+ 的使用参考价值,请读者悉知. Jcrop V0.9+ 下载地址:http://dee

C# 模拟PrintScreen 和 Alt+PrintScreen截取屏幕图片

keybd_event API 函数功能:该函数合成一次击键事件.系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,键盘驱动程序的中断处理程序调用keybd_event函数.在Windows NT中该函数己被使用SendInput来替代它. 函数原型:VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo): 参数: bVk:定义一个虚拟键码.键码值必须在1-254之间. bScan:定

【IOS 开发】IOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

一. IOS 项目简介 1. IOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类和资源; (1) HelloWorld 目录 HelloWorld 目录介绍 : -- 命名规则 : 该目录名称与 IOS 项目名称相同, 是主目录; -- 存放内容 : IOS 项目的 源码文件, 界面设计文件, 资源文件都存放在该目录下; -- 源文件 : Objective C 的 .m 和

iOS 图片截取 截屏

iOS中对图片的截取 转载的话,请标明出自博客园 截取图片的话 需要指定对象.代码不多,我不太会说,贴一下好了 1 /** 2 * 大图切小图 3 * 4 * @param BIGimg 大图 5 * 6 * @return 小图 7 */ 8 -(UIImage *)getImageFromImage :(UIImage*)BIGimg{ 9 10 //大图bigImage 11 //定义myImageRect,截图的区域 相对位置 12 CGRect myImageRect = CGRect

Xcode 设置图片全屏显示

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.// UIImage *image = [UIImage imageNamed:@"initial_page_bg.jpg" ]; UIImageView *imageView = [[UIImageView alloc]initWithImage:image