我想使用Quartz将单色图像制作成不同的颜色

时间:2013-01-05 21:26:39

标签: iphone ios objective-c quartz-graphics

我确信在stackoverflow上存在这个问题的答案,但我一直在寻找并且还没有找到它。基本上,我有几个透明背景和一些黑色图像的图像,我希望能够将黑色部分的颜色更改为其他任意颜色。

我相对肯定这是Quartz Image Masking可以实现的,但我找不到任何好的例子,所以这就是我正在寻找的。其他解决方案也欢迎。

感谢!!!

更新:我认为我的代码非常接近...但我的面具无效。我的UIView确实填充了填充颜色,但它只是一个巨大的矩形,没有任何剪裁。

更新#2:我现在更接近(我认为)使用以下代码。问题是我的背景现在是黑色的,而不是透明的。

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, 0, -rect.size.height);

CGImageRef maskImage = [self.image CGImage];
CGContextClipToMask(context, rect, maskImage);

[_colorToChangeInto setFill];
CGContextFillRect(context, rect);

1 个答案:

答案 0 :(得分:1)

答案已经在上面的问题中了。它不是很有效,因为我在IB(在故事板中)创建图像,并没有设置背景颜色。不知怎的,违约了黑人。太累了!!!

无论如何,在我将背景颜色更改为透明后,以下代码就像魅力一样!

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, 0, -rect.size.height);

CGImageRef maskImage = [self.image CGImage];
CGContextClipToMask(context, rect, maskImage);

[_colorToChangeInto setFill];
CGContextFillRect(context, rect);