【发布时间】:2010-11-27 15:23:16
【问题描述】:
我有一个灰度图像,我想用它来绘制 Cocoa 控件。图像具有各种灰度等级。在最暗的地方,我希望它绘制最暗的指定色调。我希望它在源图像为白色的地方是透明的。
基本上,我想重现在 iPhone 上的 UINavigationBar 中看到的 tintColor 的行为。
到目前为止,我已经探索了几种选择:
使用 SourceOver 合成在灰度图像上绘制色调颜色 -> 这需要不透明的色调 -> 结果比预期的要暗得多
使用 CIMultiplyCompositing CIFilter 为图像着色 -> 我不能 [CIImage drawAtPoint:fromRect:operation:fraction:] 仅绘制图像的一部分。同样适用于 NSImage -> 我偶尔会遇到我无法理解的崩溃
将灰度图像转换为蒙版。 IE。黑色应该是不透明的。白色应该是透明的。灰色应该有中间的 alpha 值。 -> 这似乎是最好的解决方案 -> 尽我所能,我做不到。
【问题讨论】:
-
我已经决定在两个连续的步骤中进行着色和裁剪。只要我绘制整个图像,CIMultiplyCompositing 就可以正常工作。我绘制到一个 NSImage,然后我部分地绘制到一个较小的图像。
标签: objective-c cocoa core-image