NSImage:设置像素's的颜色



我正在为MacOS上的像素艺术制作一个非常简单的艺术包。我目前正在使用CGRect的fill((函数直接绘制NSImage。这一切都很好,但这一功能将复合到现有的颜色上。这意味着,如果我想用alpha值绘制一种颜色,或者只是擦除像素以清除,它会将颜色与现有颜色相结合。因此,我无法使用此代码来实现"橡皮擦"工具。

我尝试过转换到CGImage,但找不到直接设置像素数据的方法。我也尝试过转换到BitmapRef,但在新创建的NSImage上不存在,我不太清楚如何确保以可用的形式正确创建。

有人能建议实现"橡皮擦"工具的最佳实践方式是什么吗?或者至少给我一个提示,告诉我用什么样的对象作为编辑的图像表示?我看到一些文件表明CGImage是可行的,但(由于上述原因(未能找到合理的解决方案。

我想一个理想的解决方案是将上下文的合成操作设置为"clear",但我不知道如何实现这一点。

为什么每当我在这里发布问题时,在尝试了几个小时后,我几乎总是在大约十分钟后找到答案?

简单的答案是NSGraphicsContext对象的合成操作不会影响NSRect的fill((函数。相反,有一种函数填充的变体形式(使用:NSCompositingOperation(,您可以使用它:

rect.fill(using: .clear)

最新更新