3

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

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

我错过了一些明显的东西吗?我是可可豆。

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

更新:

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

为什么不显示到底层?

我将研究使用 CALayers,但您必须给我一些时间来消化您所写的内容。就像我之前说的,我是 Objective C 和 Cocoa 的菜鸟。

4

1 回答 1

0

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

您对预期的“擦除”行为实际上不是很具体。要清除上下文中的矩形,请使用CGContextClearRect(). 如果要清除其他形状,请设置一个剪贴蒙版,如本问题所示。

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

于 2013-02-28T19:07:12.263 回答