如何擦除Cocoa中的绘制对象?

时间:2013-02-28 17:33:38

标签: macos cocoa drawing nsview quartz-graphics

我创建了一个绘图程序。它工作得很好,您可以导入图像并使用不同的颜色和画笔配置进行注释。

我的问题是我无法弄清楚如何允许删除。我为android编写了这个相同的应用程序,并使用PorterDuffXferMode对象进行擦除。我在Cocoa中找不到类似的东西。

我错过了一些明显的东西吗?我是一个Cocoa nube。

我正在使用NSBezierPath和NSRectFill的组合绘制NSView。

更新

在阅读这里的回复之前,我修改了我的代码,使用原始NSView下面的嵌套NSView。所以我的想法是在底部Z顺序视图上绘制背景图像,并在顶部NSView上执行所有图形。它绘制得很好,但在我的顶视图中,我在一个我想要擦除的区域调用NSClearRect,它是白色而不是擦除到底层。

为什么不显示到底层?

我打算使用CALayers,但你必须给我一些时间来消化你所写的内容。就像我之前说的那样,我是客观C和Cocoa的菜鸟。

1 个答案:

答案 0 :(得分:0)

我不确定绘图环境(传输模式)在Android上是如何工作的,但Core Graphics提供了所有标准和Photoshop风格的混合模式等。

您对预期的“擦除”行为实际上并不十分具体。要清除上下文中的矩形,请使用CGContextClearRect()。如果要清除其他形状,请设置剪贴蒙版,如this question

所示

如果你想做一些比清除区域更复杂的事情(例如想要重新绘制背景颜色或图像或图案),那么你可以查看图像蒙版和混合模式。