美文网首页iOS
图片擦除 (Quartz2D)

图片擦除 (Quartz2D)

作者: iOS_成才录 | 来源:发表于2015-11-12 19:23 被阅读140次
图片擦除.png

1、思路分析

  • 拖动的时候,擦除图片的某一部分
  • 手指拖拽的时候,清除指定位置,确定矩形区域,把控件上的内容渲染到上下文,显示清除后的图片
  • 1、开启上下文清除指定区域,将指定rect进行清除操作
  • 2、然后重新渲染顶部UIImageView,从上下文中获取清除后的上下文作为顶部UIImageView的图片显示.

2、实现代码:

#import "ViewController.h"

#define kMargin 5

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor orangeColor];
    
    UIImageView *topView = [[UIImageView alloc] init];
    topView.image = [UIImage imageNamed:@"top"];
    topView.frame = CGRectMake(50, 100, 200, 200);
    [self.view addSubview:topView];
    
    topView.userInteractionEnabled = YES; // 允许用户交互
    
    UIPanGestureRecognizer *panG = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panG:)];
    // 添加拖拽手势
    [topView addGestureRecognizer:panG];
}

/** 拖动的时候,擦除图片的某一部分
 *  手指拖拽的时候,清除指定位置,确定矩形区域,把控件上的内容渲染到上下文,显示清除后的图片
 *  1、开启上下文清除指定区域,将指定rect进行清除操作
 *  2、然后重新渲染顶部UIImageView,从上下文中获取清除后的上下文作为顶部UIImageView的图片显示.
 */
- (void)panG:(UIGestureRecognizer *)panG{
    
    // 1、开启位图上下文
    UIGraphicsBeginImageContextWithOptions(panG.view.frame.size, NO, 0);
    
    CGPoint curP = [panG locationInView:panG.view];
    
    // 2、清除范围
    CGRect rect = CGRectMake(curP.x - kMargin, curP.y - kMargin, 2*kMargin, 2*kMargin);

    // 3、 把控件上的内容渲染到上下文
    [panG.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    
    // 调用上下文清除方法,将指定rect进行清除操作
    CGContextClearRect(UIGraphicsGetCurrentContext(), rect);
    
    // 从上下文获取清除后的图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
    // 关闭位图上下文
    UIGraphicsEndImageContext();
    
    UIImageView *imageView = (UIImageView *)panG.view;
    
    imageView.image = image;
}

@end

相关文章

  • 图片擦除 (Quartz2D)

    1、思路分析 拖动的时候,擦除图片的某一部分 手指拖拽的时候,清除指定位置,确定矩形区域,把控件上的内容渲染到上下...

  • Quartz2D之图片擦除

    图片擦除

  • 图片擦除

    图片擦除实现步骤 加载图片,并添加拖动手势;另外加载一张背景图片,用于图片被擦除后显示,置于擦除图片下方 开启位图...

  • 图片擦除

    图片擦除思路.弄两个不同的图片.上面一张, 下面一张.添加手势,手指在上面移动,擦除图片.擦除前要先确定好擦除区域...

  • 图片擦除

    这里下载DEMO 原理:双层imageView,顶部imageview添加拖动手势,清除顶部imageview的上...

  • 图片水印.擦除 图片截屏.........

    画板 图片裁剪 图片擦除 方形图片生产圆形头像 手机截屏 图片水印

  • iOS 图片擦除

    业务逻辑:上下两张图片,上方的图片遮盖下方的图片,为上方图片添加手势,根据手势的位置创建一个擦除的小块,然后开启位...

  • iOS - 图片擦除

    iOS 这碗饭吃了这么久,却没留下点什么东西在我的简书上,一方面是自己的懒惰,一方面还是自己懒,但是今天呢,想起来...

  • 【练习笔记】AK大神001期-简易天空替换

    导入天空图片素材和要替换天空的视频素材,视频放在天空素材下方 给天空素材加内置效果“线性擦除”,把图片素材进行擦除...

  • Quartz2D 实例应用

    裁剪一个圆形的图片的分类 截图 调用 自定义图片的截取 擦除图片

网友评论

    本文标题:图片擦除 (Quartz2D)

    本文链接:https://www.haomeiwen.com/subject/kjhfhttx.html