使用CoreGraphics框架进行擦除或透明笔划问题

时间:2010-07-14 15:03:12

标签: iphone core-graphics

在我的一个应用程序中,我试图删除/透明描绘使用CoreGraphics框架(UIImage等)绘制的CGContextRef的一部分。那么在这个过程中,我可以通过调用“removeAllObjects”消息一次性清除绘图,但我无法弄清楚,如何擦除绘图图像的一部分。天哪!我坐了一整天但仍然没有结果,现在它杀了我。请大家帮帮我。简而言之,我的要求就像橡皮擦一样可以擦除我的绘图图像的一部分。感谢您的帮助!!

2 个答案:

答案 0 :(得分:5)

只需CGContextSetBlendMode(context, kCGBlendModeClear)

此调用会更改颜色混合模式,使绘图操作清除位图而不是使用颜色绘制。

要切换回正常渲染,请执行CGContextSetBlendMode(context, kCGBlendModeNormal)

使用不同的混合模式非常有用。

答案 1 :(得分:-1)

通常情况下,CGContext是仅添加剂的画布 - 也就是说,您只能添加更多颜料,而不是删除您放在其上的任何现有颜料。如果你的画布开始是白色的,你可以用白色涂抹来伪造和擦除操作。

一个简单的解决方案是手动清除支持位图正在擦除的区域。

一个复杂的解决方案是存储用户输入的所有绘制操作,并通过擦除操作使其变形(这也会使撤消模式的添加变得简单)

注意:有CGContextClearRect函数,但它通常只能在位图上下文中按预期工作。