无论我做什么,我似乎无法弄清楚为什么我的图像在iOS显示屏上模糊不清。 它是否是我在图像编辑器或绘图代码中创建的并不重要,但我认为代码会使问题更容易解析。我知道如果这条线是1像素宽,它会显得模糊,但我尝试了多个线宽尺寸,结果相似。我该怎么做才能确保我的图形看起来很清晰?
UIGraphicsBeginImageContext(CGSizeMake(1000, 1000));
UIBezierPath *bezier = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 1000, 1000)];
[[UIColor greenColor]set];
[bezier fill];
[[UIColor blackColor]set];
bezier = [UIBezierPath bezierPath];
[bezier setLineWidth:1.5]; //I tried .5, 1, 1.5, & 2 with similar results
[bezier moveToPoint:CGPointMake(450, 500)];
[bezier addLineToPoint:CGPointMake(500, 400)];
[bezier addLineToPoint:CGPointMake(550, 500)];
[bezier closePath];
[bezier stroke];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
答案 0 :(得分:0)
UIGraphicsBeginImageContext
:
...等同于调用
UIGraphicsBeginImageContextWithOptions
函数与不透明 参数设置为NO
,比例因子为1.0
。
但是,UIGraphicsBeginImageContextWithOptions
将其scale
参数定义为:
比例
要应用于位图的比例因子。如果指定值0.0
,则比例因子将设置为设备主屏幕的比例因子。
因此,您使用UIGraphicsBeginImageContextWithOptions
正在创建一个缩放为1.0
的上下文。对于例如,这是正确的去年的iPad Mini,但所有视网膜级设备都有一个原生的'比例2.0
- 每个逻辑点两个像素。 UIGraphicsBeginImageContextWithOptions
介绍了0.0
的特殊情况,以便您不必为处理为自己获取该设备的正确数字而烦恼(尽管[[UIScreen mainScreen] scale]
将是一种简单的方法)。
因此,将您的退出电话转至UIGraphicsBeginImageContext(CGSizeMake(1000, 1000))
:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1000, 1000), NO, 0.0)
否则,您创建的上下文的像素数将是屏幕在相应空间量内的四分之一。