Iphone 我想用石英制作不同颜色的单色图像
我确信这个问题的答案在stackoverflow上存在,但我一直在寻找,还没有找到它。基本上,我有几个透明背景的图像和一些黑色图像,我希望能够将黑色部分的颜色更改为其他任意颜色 我相对确信这是可以实现的,但我还没有找到任何好的例子,所以这就是我要寻找的。也欢迎其他解决办法 谢谢 更新:我想我对这段代码已经非常熟悉了。。。但是我的面具坏了。虽然我的Iphone 我想用石英制作不同颜色的单色图像,iphone,ios,objective-c,quartz-graphics,Iphone,Ios,Objective C,Quartz Graphics,我确信这个问题的答案在stackoverflow上存在,但我一直在寻找,还没有找到它。基本上,我有几个透明背景的图像和一些黑色图像,我希望能够将黑色部分的颜色更改为其他任意颜色 我相对确信这是可以实现的,但我还没有找到任何好的例子,所以这就是我要寻找的。也欢迎其他解决办法 谢谢 更新:我想我对这段代码已经非常熟悉了。。。但是我的面具坏了。虽然我的UIView确实用填充颜色填充,但它只是一个巨大的矩形,没有任何剪裁 更新#2:我现在(我想)更接近以下代码。问题是我的背景现在是黑色的,而不是透明的
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中创建图像(在故事板中),并且没有设置背景色。不知怎的,它默认为黑色。太令人沮丧了 无论如何,在我将背景色更改为透明后,下面的代码就像一个符咒
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);
如果在填充之前进行剪辑,会发生什么情况?剪辑只影响您以后所做的绘图。效果相同。只是一个大盒子的填充颜色。如果我去掉颜色空间B,直接使用图像作为遮罩,我会得到一个接近我想要的图像,但是背景是黑色的,而不是透明的。(我需要翻转坐标,我可以通过
CGContextScaleCTM(mainViewContentContext,1,-1);CGContextTranslateCTM(mainViewContentContext,0,-rect.size.height);
)翻转坐标。这个解决方案提供了另一个答案: