我正在使用核心图形绘制圆形图像,并修改了此SO answer
的实现这是我的来源:
+ (UIImage*)circularImageWithRadius:(CGFloat)radius color:(UIColor*)color{
CGRect rect = CGRectMake(0.0f, 0.0f, radius*2, radius*2);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillEllipseInRect(context, rect);
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
边缘模糊,我不确定为什么(我认为设备的分辨率无关紧要,开箱即用)。
我尝试用CGContextFillEllipseInRect(context, rect);
替换CGContextFillRect(context, rect);
,这也很模糊。然后我尝试CGContextFillRect(context, CGRectMake(0, 0, radius*4, radius*4)
,它完美,清晰的图像和一切(尽管是一个正方形,而不是一个圆圈)。所以我改回了CGContextDrawEllipseInRect(context, CGRectMake(0, 0, radius*4, radius*4)
,但这是我的结果:
而对于矩形,它与使用半径* 2时的大小相同,但图像更清晰。
如何修复模糊问题以及CGContextFillEllipseInRect
为什么不填充预定义的图像rect?
答案 0 :(得分:9)
在我发布之后立即发现这一点我感到愚蠢,但this answer指出了方向。
我刚刚添加了
if(UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0);
} else {
UIGraphicsBeginImageContext(rect.size);
}
而不只是UIGraphicsBeginImageContext(rect.size);
进入我的原始来源,而且它清晰而锐利。
答案 1 :(得分:0)
适用于Swift 3.0
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
defer { UIGraphicsEndImageContext() }
if let context = UIGraphicsGetCurrentContext() {
/// Do Stuff
}