使用 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 显示屏上看起来很厚实
Java AWT 图形界面编程Canvas 组件中使用 Graphics 绘图 ② ( AWT 绘图步骤 | Graphics 绘图常用 API )