我有一个灰度 gem 顶 View 。
(PNG 格式,alpha 分量也是如此)
我想根据这张图片创建 12 个小尺寸按钮,每个按钮颜色不同。
为了整洁起见,我想在代码中而不是在某些艺术包中进行外部操作。
任何人都可以提供执行此操作的方法(甚至一些代码)吗?
PS 我知道如何在 GL 中使用大量代码来实现它,我希望有一种使用核心图形/核心动画的更简单方法
编辑:工作解决方案,感谢下面的答案
CGSize targetSize = (CGSize){100,100};
UIImage* image;
{
CGRect rect = (CGRect){ .size = targetSize };
UIGraphicsBeginImageContext( targetSize );
{
CGContextRef X = UIGraphicsGetCurrentContext();
UIImage* uiGem = [UIImage imageNamed: @"GemTop_Dull.png"];
// draw gem
[uiGem drawInRect: rect];
// overlay a red rectangle
CGContextSetBlendMode( X, kCGBlendModeColor ) ;
CGContextSetRGBFillColor ( X, 0.9, 0, 0, 1 );
CGContextFillRect ( X, rect );
// redraw gem
[uiGem drawInRect: rect
blendMode: kCGBlendModeDestinationIn
alpha: 1. ];
image = UIGraphicsGetImageFromCurrentImageContext();
}
UIGraphicsEndImageContext();
}
最佳答案
最简单的方法是将图像绘制成 RGB 颜色空间 CGBitmapContext ,使用 CGContextSetBlendMode
设置 kCGBlendModeColor
,然后用纯色绘制它(例如使用 CGContextFillRect
)。
关于iOS:将 RGB 滤镜应用于灰度 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683822/