【发布时间】:2014-06-21 09:22:07
【问题描述】:
我有一个小问题。
我正在为 iPhone 制作一个绘画/绘图应用程序。在我的应用程序中,您可以绘制背景和照片。但我找不到橡皮擦的解决方案。因为大多数橡皮擦样品都是白色油漆。因此,在非白色背景上,它只是制作白色“线条”。对于(某种)透明橡皮擦的任何解决方案,它只会擦除绘制“线条”而不是背景?
感谢您的帮助!
【问题讨论】:
我有一个小问题。
我正在为 iPhone 制作一个绘画/绘图应用程序。在我的应用程序中,您可以绘制背景和照片。但我找不到橡皮擦的解决方案。因为大多数橡皮擦样品都是白色油漆。因此,在非白色背景上,它只是制作白色“线条”。对于(某种)透明橡皮擦的任何解决方案,它只会擦除绘制“线条”而不是背景?
感谢您的帮助!
【问题讨论】:
不要使用 kCGBlendModeNormal 与白色颜料的混合模式进行绘制,而是在橡皮擦打开时使用 kCGBlendModeDestinationOut 进行绘制。 (这假设背景位于绘图层后面的层中。)
例如:
<pre>
if (eraser == TRUE) // Erase to show background
{
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeDestinationOut);
}
else // Draw with color
{
CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeNormal);
}
</pre>
您可能还想查看此 CGBlendMode 参考,该参考显示了不同混合类型的效果,包括解释,最初发布于:http://ericasadun.com/CookbookTest/Blending.pdf
文档的替代链接:http://www.docdroid.net/xt0b/blending-kcgblendmode.pdf.html
【讨论】: