在我的一个应用程序中,我试图删除/透明描绘使用CoreGraphics框架(UIImage
等)绘制的CGContextRef
的一部分。那么在这个过程中,我可以通过调用“removeAllObjects”消息一次性清除绘图,但我无法弄清楚,如何擦除绘图图像的一部分。天哪!我坐了一整天但仍然没有结果,现在它杀了我。请大家帮帮我。简而言之,我的要求就像橡皮擦一样可以擦除我的绘图图像的一部分。感谢您的帮助!!
答案 0 :(得分:5)
只需CGContextSetBlendMode(context, kCGBlendModeClear)
此调用会更改颜色混合模式,使绘图操作清除位图而不是使用颜色绘制。
要切换回正常渲染,请执行CGContextSetBlendMode(context, kCGBlendModeNormal)
使用不同的混合模式非常有用。
答案 1 :(得分:-1)
通常情况下,CGContext
是仅添加剂的画布 - 也就是说,您只能添加更多颜料,而不是删除您放在其上的任何现有颜料。如果你的画布开始是白色的,你可以用白色涂抹来伪造和擦除操作。
一个简单的解决方案是手动清除支持位图正在擦除的区域。
一个复杂的解决方案是存储用户输入的所有绘制操作,并通过擦除操作使其变形(这也会使撤消模式的添加变得简单)
注意:有CGContextClearRect
函数,但它通常只能在位图上下文中按预期工作。