我有一个灰度宝石的顶视图。(PNG格式,所以具有alpha组件)
我想要从这个图像创建12个不同颜色的小按钮。
为了整洁起见,我想在代码中完成而不是在艺术软件中进行操作。
有人能提供一种方法(甚至一些代码)来实现这一点吗?
PS:我知道如何在GL中使用大量代码来完成这个任务,但我希望能够使用核心图形/核心动画更简单的方式实现。
编辑:感谢下面答案的完美解决方案。
我想要从这个图像创建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();
}
UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0);
而不是UIGraphicsBeginImageContext( targetSize );
。参数NO
和0.0
分别表示使用不透明上下文(YES或NO值)和比例因子(0.0表示设备比例因子,任何其他值表示显式比例因子)。 - Thomas Verbeek