为什么我的绘图代码不断产生模糊的形状?

流行内核

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

...等效于UIGraphicsBeginImageContextWithOptions将不透明参数设置为NO并将比例因子设置为1.0

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

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)

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的代码不断抛出KeyError?

来自分类Dev

为什么我的代码使用Parallel :: ForkManager会产生僵尸?

来自分类Dev

为什么我的代码使用Parallel :: ForkManager会产生僵尸?

来自分类Dev

为什么我的代码会产生此输出(Python)?

来自分类Dev

为什么在我的代码中使用宏会产生错误?

来自分类Dev

为什么我在 Jupyter 上的代码不产生输出

来自分类Dev

需要解释为什么我的代码会产生 ValueError

来自分类Dev

为什么我的代码没有产生预期的结果?

来自分类Dev

为什么while循环会在我的代码中产生错误?

来自分类Dev

为什么这个 Matlab 代码的绘图是空的?

来自分类Dev

为什么此代码不断被“终止”?

来自分类Dev

为什么此代码不断被“终止”?

来自分类Dev

为什么我的显示文字模糊

来自分类Dev

为什么在出现异常后我的代码会不断重复自身?

来自分类Dev

为什么我在这行代码上不断收到“意外令牌”错误?

来自分类Dev

我想知道为什么我的代码在 XML 信息之间产生空白行?

来自分类Dev

为什么长时间绘图后我的绘图会滞后?

来自分类Dev

为什么长时间绘图后我的绘图会滞后?

来自分类Dev

为什么我的形象不断重复?

来自分类Dev

为什么我不断得到Null?

来自分类Dev

为什么我不断收到NoSuchElementException?

来自分类Dev

为什么我的ActionListener不断重复?

来自分类Dev

为什么我的命名管道不断被修改?

来自分类Dev

为什么新贵不断刷新我的流程?

来自分类Dev

为什么我不断收到预期声明

来自分类Dev

Android:为什么我的onResume()DialogInterface不断循环不断?

来自分类Dev

为什么此代码会产生InvalidMemoryOperationError?

来自分类Dev

为什么此代码会产生错误?

来自分类Dev

为什么此代码会产生错误?

Related 相关文章

  1. 1

    为什么我的代码不断抛出KeyError?

  2. 2

    为什么我的代码使用Parallel :: ForkManager会产生僵尸?

  3. 3

    为什么我的代码使用Parallel :: ForkManager会产生僵尸?

  4. 4

    为什么我的代码会产生此输出(Python)?

  5. 5

    为什么在我的代码中使用宏会产生错误?

  6. 6

    为什么我在 Jupyter 上的代码不产生输出

  7. 7

    需要解释为什么我的代码会产生 ValueError

  8. 8

    为什么我的代码没有产生预期的结果?

  9. 9

    为什么while循环会在我的代码中产生错误?

  10. 10

    为什么这个 Matlab 代码的绘图是空的?

  11. 11

    为什么此代码不断被“终止”?

  12. 12

    为什么此代码不断被“终止”?

  13. 13

    为什么我的显示文字模糊

  14. 14

    为什么在出现异常后我的代码会不断重复自身?

  15. 15

    为什么我在这行代码上不断收到“意外令牌”错误?

  16. 16

    我想知道为什么我的代码在 XML 信息之间产生空白行?

  17. 17

    为什么长时间绘图后我的绘图会滞后?

  18. 18

    为什么长时间绘图后我的绘图会滞后?

  19. 19

    为什么我的形象不断重复?

  20. 20

    为什么我不断得到Null?

  21. 21

    为什么我不断收到NoSuchElementException?

  22. 22

    为什么我的ActionListener不断重复?

  23. 23

    为什么我的命名管道不断被修改?

  24. 24

    为什么新贵不断刷新我的流程?

  25. 25

    为什么我不断收到预期声明

  26. 26

    Android:为什么我的onResume()DialogInterface不断循环不断?

  27. 27

    为什么此代码会产生InvalidMemoryOperationError?

  28. 28

    为什么此代码会产生错误?

  29. 29

    为什么此代码会产生错误?

热门标签

归档