[英]How can I colorize a black/white UIImageView programmatically?
我有一組黑白圖像,如下所示。 如果我沒記錯的話,可以通過某種方式設置UIImage的混合或遮罩屬性,將其與背景UIView混合。
在這種情況下,我想將此圖像的顏色更改為紅色以表示生命值。 如何以編程方式更改此UIImage的顏色?
我知道圖像濾鏡的使用,特別是色調偏移,但它們真的是資源密集型,而且它們不適用於白色圖像,所以我正在尋找另一種解決方案。
我嘗試用alpha 0.4覆蓋UIView並將其背景顏色設置為紅色,這是結果:
這可能在某些情況下有效,但在我的情況下,我希望能夠更好地控制我所獲得的顏色。
您可以在此圖像上繪制新圖像。 以下代碼會將圖像中的白色與您提供的背景顏色混合在一起。 百分比是0-1.0浮點數,用於控制從底部開始的圖像與您選擇的顏色混合的程度,因此可以獲得像心臟填充紅色的結果來表示生命值。
-(UIImage*)blendImage:(UIImage*)image withColor:(UIColor*)color fillUpTo:(float)percent
{
//math got me
float realPercent = 1.0-percent;
CGSize size = image.size;
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, CGRectMake(0, size.height*realPercent, size.width, size.height*(1-realPercent)));
//make sure the image is not upside down
CGContextTranslateCTM(context, 0, image.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
//draw image by blending colors
CGContextSetBlendMode(context, kCGBlendModeMultiply);
CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), image.CGImage);
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;
}
結果為0.3%:
在這種情況下,最簡單的方法是在圖像上方覆蓋半透明的紅色矩形。 由於圖像是黑白的,黑色區域將保持黑色。 更改紅色矩形的高度以指示不同的健康級別。
只需制作一個紅色背景顏色的UIView,不是不透明的,與UIImageView的尺寸相同。 將背景顏色的alpha設置為一半或更小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.