如何解决NSImage:直接设置像素的颜色
我正在为MacOS上的像素艺术制作一个非常简单的艺术包装。我目前正在使用CGRect的fill()函数直接绘制到NSImage。这一切都很好,但是此功能可以与现有颜色组合。这意味着,如果我想用Alpha值绘制颜色,或者只是擦除要清除的像素,它会将颜色与现有颜色结合在一起。结果,我无法使用此代码来实现“橡皮擦”工具。
我尝试过转换到CGImage,但是找不到直接设置像素数据的方法。我也尝试过使用BitmapRef,但是在新创建的NSImage上不存在这种方法,而且我不太想知道如何确保以正确的形式正确创建了一个。
有人能建议实现“橡皮擦”工具的最佳实践方法是什么,或者至少能给我一个提示,以用作编辑图像表示的正确对象是什么?我看过一些文档,建议使用CGImage作为解决方案,但是(由于上述原因)未能找到合理的解决方案。
我想理想的解决方案是将上下文的合成操作设置为“清除”的某种方式,但我看不到如何实现。
解决方法
为什么每当我在这里发表问题几个小时后,大约十分钟后我总是会找到答案?
简单的答案是NSGraphicsContext对象的合成操作不会影响NSRect的fill()函数。相反,您可以使用该函数的变体形式fill(使用:NSCompositingOperation):
rect.fill(using: .clear)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。