1
我試圖在運行時更改圖像的顏色。我已經看到了幾個關於SO的答案,但它們都改變了背景顏色,而不是前景,這正是我想要做的。我將我的代碼放在另一個SO thread上。圖像着色/使用混合掩蔽前景
這裏是我的代碼:
@implementation UIImage (Coloring)
-(UIImage*) imageWithColorOverlay:(UIColor*)color
{
//create context
UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
CGContextRef context = UIGraphicsGetCurrentContext();
// drawingcode
//bg
CGRect rect = CGRectMake(0.0, 0.0, self.size.width, self.size.height);
[self drawInRect:rect];
//fg
CGContextSetBlendMode(context, kCGBlendModeMultiply);
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//end
return image;
}
@end
這是導致迄今:
從左至右依次爲:
- 沒有混合,只是正常的資產。圖像背後的灰色bg來自
UIView
,圖像的bg是透明的。 - 乘以
kCGBlendModeMultiply
- 顏色加深與
kCGBlendModeColorBurn
是否有CGBlendMode
那將實現替換前景色?另外,是否可以替換前景色(白色)和陰影(黑色)?