使用 Core Graphics 绘图在 Retina 显示屏上看起来很厚实

Posted

技术标签:

【中文标题】使用 Core Graphics 绘图在 Retina 显示屏上看起来很厚实【英文标题】:Drawing with Core Graphics looks chunky on Retina display 【发布时间】:2011-03-13 18:41:21 【问题描述】:

我有一个 UIView,它从 drawRect:rect 内部绘制一个圆圈。在阅读了 Retina 显示屏上的 Apple 开发信息后,似乎使用 Core Graphics 意味着绘图会自动利用更高的分辨率。然而,与徽章图标中的类似圆圈相比,这个简单的圆圈看起来很粗。显然我将它与具有光泽和阴影的东西进行比较,但我认为很明显我的也没有被绘制出来。我尝试截取苹果图标徽章和我的圆圈的屏幕截图,它们在我的 Mac 上看起来大致相同——不过,在手机上查看它们时,差异很明显。我在这里缺少什么简单的东西吗?

这是我在 drawRect:rect 中使用的绘图代码

UIBezierPath* aPath = [UIBezierPath bezierPathWithOvalInRect:
                       CGRectMake(0, 0, 22, 22)];

[[UIColor whiteColor] setStroke];
[[UIColor redColor] setFill];

CGContextRef aRef = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(aRef, 10, 10);
aPath.lineWidth = 3;
[aPath fill];
[aPath stroke];

感谢您的帮助, 抢

【问题讨论】:

【参考方案1】:

糟糕,它首先需要抗锯齿:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShouldAntialias(context, YES);

我在绘制之前添加了这个,然后将其设置为 NO,然后立即绘制了另一个圆圈。两个圆圈并排显示这就是问题所在。

【讨论】:

以上是关于使用 Core Graphics 绘图在 Retina 显示屏上看起来很厚实的主要内容,如果未能解决你的问题,请参考以下文章

iOS绘图—— UIBezierPath 和 Core Graphics

使用 Core Graphics 绘图在 Retina 显示屏上看起来很厚实

使用Core Graphics绘图时,PDF文件显示不正确

Core Graphics框架 利用Quartz 2D绘图

使用 Core Graphics 绘制圆弧时绘制的额外线

Java AWT 图形界面编程Canvas 组件中使用 Graphics 绘图 ② ( AWT 绘图步骤 | Graphics 绘图常用 API )