我想用Quartz来制作一个不同颜色的单色图像

我敢肯定这个答案存在于计算器上,但我一直在寻找,一直没有find它。 从本质上讲,我有几个透明背景图像和一些黑色图像,我想能够将黑色部分的颜色更改为其他任意颜色。

我相对确定这是用Quartz Image Masking实现的,但是我还没有find任何好的例子,所以这就是我正在寻找的。 其他解决scheme也受到欢迎。

谢谢!!!

更新:我觉得我很接近这个代码…但我的面具不工作。 我的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); 

答案已经在上面的问题中。 这是不是很工作,因为我在IB(在故事板)创build图像,并没有设置背景颜色。 不知何故,默认黑色。 所以,阻止!

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

 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);