如何为矢量 NSImage 着色 (PDF)

How to tint a vectorial NSImage (PDF)

我所有的图像在 XCAssets 中都是单色 PDF。我想在运行时给它们上色,但我在 NSImage.

中找不到任何色调 属性

当我使用 NSRectFillUsingOperation 时,它会使图片光栅化,所以我宁愿避免它。

总而言之,如何在不进行栅格化的情况下使用 RGB 为矢量 NSImage 着色?

我最终在 IB 中的按钮上设置了一个名为 "CIFalseColor" 的 CIFilter,然后在运行时我通过以下方式控制颜色:

button.contentFilters[0].setValue(myCIColor, forKey: "inputColor1")

如果您的图像是白色,此方法有效,inputColor2 控制黑色,所以我认为灰度图像是两者的混合。

这不是最好的,因为它会损害应用程序的性能,但在有人找到更好的方法之前它会起作用。

如果您使用的是 Core Graphics 上下文,则可以使用 CGContextSetBlendMode 为重叠对象指定混合模式。这可以采用表示 PDF 规范中每个标准混合模式的值,例如差异、乘法、叠加、屏幕等

然后使用 CGContextFillRect 创建一个所需颜色的色调框。