• 图片擦除


        图片擦除思路.
        弄两个不同的图片.上面一张, 下面一张.
        添加手势,手指在上面移动,擦除图片.
        擦除前要先确定好擦除区域.
        假设擦除区域的宽高分别为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();

  • 相关阅读:
    MySQL百万级、千万级数据多表关联SQL语句调优
    不就是SELECT COUNT语句吗,居然有这么多学问
    分布式锁讲解
    Java 中堆和栈的区别
    Java中的回调机制
    在Eclipse上Maven环境配置使用
    项目忽然出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法
    HttpServletResponse
    com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
    深入浅出java常量池
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/7020714.html
Copyright © 2020-2023  润新知