0

我确信这个问题的答案存在于 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);
4

1 回答 1

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);
于 2013-01-06T06:46:52.023 回答