【发布时间】:2011-07-13 18:35:02
【问题描述】:
我有一个灰度宝石顶视图。
(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();
}
【问题讨论】:
-
我很好奇您的代码示例中看似多余的 {} - 这些是做什么的
-
它们使代码更清晰/封装变量
-
如果您想支持视网膜图像,请确保使用
UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0);而不是UIGraphicsBeginImageContext( targetSize );。参数NO和0.0分别表示使用不透明上下文(YES 或 NO 值)和比例因子(设备比例因子为 0.0,显式比例因子为任何其他值)。
标签: ios image-processing filter core-graphics