当前位置: 首页 > news >正文

在自己实现的ios画图程序中如何实现橡皮擦功能

通过cgcontextref来画图的时候,实现橡皮擦功能的方式有两种:


1. 将画笔设置为背景色来实现橡皮擦功能。
这种情况适用于当前设置context的blend mode为normal的时候,即
CGContextSetBlendMode(context, kCGBlendModeNormal);
此时设置背景色的代码如下:
UIGraphicsBeginImageContext ( drawBgView . bounds . size );
// get the image
[ drawBgView . layer   renderInContext: UIGraphicsGetCurrentContext ()];
UIImage   * image   =   UIGraphicsGetImageFromCurrentImageContext ();
UIGraphicsEndImageContext ();

self . drawView . currentColor   =   [ UIColor   colorWithPatternImage: image ];
 
 
2.通过clearColor来实现橡皮擦功能
个人觉得第二种方式更加简单方面且适用性更加广泛。
第一种情况如果背景色可以变化的情况下,则会有问题。第二种方式因此更具有通用性。
CGContextSetBlendMode(context, kCGBlendModeCopy);
此时再设置画笔颜色为clearColor就可以清除画笔
 
WARNING:设置blend mode为copy的情况下,如果画笔同时支持透明度的调整,则会出现一些小问题,需要注意。

相关文章:

  • visual c++ 6.0中文企业版卸载后重装失败的解决办法
  • 【转】孩子们应该学习的9种基本技能
  • SAP-账号维护--登陆篇
  • centos 5.7_64位下安装FastDFS_v3.06分布式文件系统
  • Verizon:2012年数据破坏调查报告
  • MySQL数据库备份的10个教程
  • PHP数组操作——取数组最后一个值
  • php---编译安装 PHP 的 Redis 扩展
  • 关于Installshield中Ie8\Ie9\SQL Server 2008 R2 Native Client等Prq文件在线下载地址
  • SQL Server 2008中增强的汇总技巧
  • cocos2d Labels and Fonts 标签和字体(附:关于Hiero的二三事)
  • ios5之ipad开发之分割试图与弹出层的使用
  • After Interview of Mstar
  • 创业路上的成功与快乐
  • linux下IPTABLES配置详解
  • 【Leetcode】101. 对称二叉树
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Android 控件背景颜色处理
  • Apache Pulsar 2.1 重磅发布
  • CentOS7 安装JDK
  • const let
  • E-HPC支持多队列管理和自动伸缩
  • IDEA 插件开发入门教程
  • JDK 6和JDK 7中的substring()方法
  • Mysql5.6主从复制
  • Python学习之路13-记分
  • 包装类对象
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 线上 python http server profile 实践
  • 用jquery写贪吃蛇
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • k8s使用glusterfs实现动态持久化存储
  • 阿里云服务器如何修改远程端口?
  • ​Spring Boot 分片上传文件
  • ​决定德拉瓦州地区版图的关键历史事件
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $forceUpdate()函数
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (8)STL算法之替换
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (三)模仿学习-Action数据的模仿
  • (转)Scala的“=”符号简介
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net 发送邮件
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net连接oracle数据库
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [ C++ ] STL---string类的使用指南
  • []常用AT命令解释()