ios – 为什么我的绘图代码会导致模糊的形状?

无论我做什么,我似乎无法弄清楚为什么我的图像在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();
UIGraphicsBeginImageContext:

… is equivalent to calling the
UIGraphicsBeginImageContextWithOptions function with the opaque
parameter set to NO and a scale factor of 1.0.

但是,UIGraphicsBeginImageContextWithOptions将其scale参数定义为:

scale
The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.

因此,您对UIGraphicsBeginImageContextWithOptions的使用正在创建一个比例为1.0的上下文.这对于例如去年的iPad Mini,但所有视网膜级设备都具有2.0的“原生”标度 – 每个逻辑点两个像素. UIGraphicsBeginImageContextWithOptions介绍了0.0的特殊情况,这样你就不必为自己处理为该设备获取正确的数字而烦恼(尽管[[UIScreen mainScreen] scale]将是一种简单的方法).

因此,将您的退出调用切换到UIGraphicsBeginImageContext(CGSizeMake(1000,1000)):

UIGraphicsBeginImageContextWithOptions(CGSizeMake(1000, 1000), NO, 0.0)

否则,您创建的上下文将具有屏幕在相应空间量中的四分之一像素.

https://stackoverflow.com/questions/25210620/how-come-my-drawing-code-keeps-resulting-in-fuzzy-shapes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ios – 为什么我的绘图代码会导致模糊的形状?