图片擦除思路.
弄两个不同的图片.上面一张, 下面一张.
添加手势,手指在上面移动,擦除图片.
擦除前要先确定好擦除区域.
假设擦除区域的宽高分别为30.
那点当前的擦除范围应该是通过当前的手指所在的点来确定擦除的范围,位置.
那么当前擦除区域的x应该是等于当前手指的x减去擦除范围的一半,同样,y也是当前手指的y减去高度的一半.
有了擦除区域,要让图片办到擦除的效果,首先要把图片绘制到图片上下文当中, 在图片上下文当中进行擦除.
之后再生成一张新的图片,把新生成的这一张图片设置为上部的图片.那么就可以通过透明的效果,看到下部的图片了.
第一个参数, 要擦除哪一个上下文
第二人参数,要擦除的区域.
CGContextClearRect(ctx, rect);
具体实现代码为:
确定擦除的范围
CGFloat rectWH = 30;
获取手指的当前点.curP
CGPoint curP = [pan locationInView:pan.view];
CGFloat x = curP.x - rectWH * 0.5;
CGFloat y = curP.y - rectWH * 0.5;
CGRect rect = CGRectMake(x, y,rectWH, rectWH);
先把图片绘制到上下文.
UIGraphicsBeginImageContextWithOptions(self.imageView.bounds.size, NO, 0);
获取当前的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
把上面一张图片绘制到上下文.
[self.imageView.layer renderInContext:ctx];
再绘上下文当中图片进行擦除.
CGContextClearRect(ctx, rect);
生成一张新图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
再把新的图片给重新负值
self.imageView.image = newImage;
关闭上下文.
UIGraphicsEndImageContext();
网友评论