gpt4 book ai didi

objective-c - 为灰度 NSImage(或 CIImage)着色

转载 作者:太空狗 更新时间:2023-10-30 03:10:03 25 4
gpt4 key购买 nike

我有一张灰度图像,我想用它来绘制 Cocoa 控件。图像具有不同的灰度级别。在最暗的地方,我希望它绘制最暗的指定色调。我希望它在源图像为白色的地方是透明的。

基本上,我想重现在 iPhone 上的 UINavigationBar 中看到的 tintColor 的行为。

到目前为止,我已经探索了几种选择:

  • 使用 SourceOver 合成在灰度图像上绘制色调颜色-> 这需要不透明的色调-> 结果比预期的要暗得多

  • 使用 CMultiplyCompositing CIFilter 对图像进行着色-> 我不能 [CIImage drawAtPoint:fromRect:operation:fraction:] 只绘制图像的一部分。同样适用于 NSImage-> 我偶尔会遇到无法理解的崩溃

  • 将灰度图像转换为蒙版。 IE。黑色应该是不透明的。白色应该是透明的。灰色应该有中间的 alpha 值。-> 这似乎是最好的解决方案-> 尽我所能,我无法做到这一点。

最佳答案

上述解决方案对我不起作用。但是这个更简单的解决方案对我来说非常有用

- (NSImage *)imageTintedWithColor:(NSColor *)tint
{
NSImage *image = [self copy];
if (tint) {
[image lockFocus];
[tint set];
NSRect imageRect = {NSZeroPoint, [image size]};
NSRectFillUsingOperation(imageRect, NSCompositeSourceIn);
[image unlockFocus];
}
return image;
}

关于objective-c - 为灰度 NSImage(或 CIImage)着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1413135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com