我是Core Graphics中的新人,我试图画圆圈。它们可以是透明的(仅中风)并填充笔触颜色。所以方法如下:
+ (UIImage *)iconImageWithColor: (UIColor *)markColor strokeOnly:(BOOL)strokeOnly
{
CGRect rect = CGRectMake(0.0f, 0.0f, 20.0f, 20.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGPathRef clippingPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:7.5f].CGPath;
CGContextAddPath(context, clippingPath);
CGContextClip(context);
CGContextSetFillColorWithColor(context, strokeOnly == YES ? [[UIColor clearColor] CGColor] : [markColor CGColor]);
CGContextFillRect(context, rect);
CGPathRef path = CGPathCreateWithRoundedRect(rect, 10.f, 10.f, NULL);
[markColor setStroke];
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathFillStroke);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
结果很奇怪 - 看起来图像的分辨率非常低。是否有可能使结果图像在视网膜显示器上看起来很好?
答案 0 :(得分:13)
UIGraphicsBeginImageContext
创建一个比例为1的上下文,因此非视网膜。
您想要使用的是
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0f)
比例0表示它将使用设备屏幕比例
答案 1 :(得分:4)
使用UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0);
最后一个参数表示结果像素密度(比例)。当你传递0时,它会自动从设备本机屏幕刻度中选择它。