【问题标题】:Does CGContextConvertRectToDeviceSpace work properly on retina devices?CGContextConvertRectToDeviceSpace 在视网膜设备上是否正常工作?
【发布时间】:2012-05-08 08:28:36
【问题描述】:

我正在构建一个基于 iOS 的核心文本应用程序(iOS 5、iPad),并在一个视图中执行一些印刷计算(在 drawRect 中)。

我注意到,当我使用 CGContextConvertRectToDeviceSpace 时,我在视网膜设备上得到的结果是非视网膜设备的两倍。据我了解,在 drawRect 中应用了一个隐式变换,应该隐藏任何视网膜/非视网膜设备差异,所以我很困惑为什么我应该看到任何差异。

更具体地说,我正在尝试计算用户空间坐标中给定 CTLine 的用户坐标中的位置。我首先将 CTLineGetTypographicBounds 用于我的线,并使用 CGContextConvertRectToDeviceSpace 中的这些值来获得一个矩形......但是我得到的矩形在视网膜设备上的宽度和高度是非视网膜设备的两倍。我有什么遗漏吗?

【问题讨论】:

    标签: ios core-graphics core-text retina-display


    【解决方案1】:

    我注意到当我使用 CGContextConvertRectToDeviceSpace 时,我在视网膜设备上得到的结果是非视网膜设备的两倍。

    对我来说听起来很正常。 “设备空间”表示输出设备上的实际像素,在这种情况下是视网膜显示器。它通常比 CGContext 的用户空间坐标系大 2 倍。

    通常很少需要转换到设备空间或从设备空间转换 - 只有当您绝对需要将绘图与真实像素对齐时才会这样做。

    您想通过使用CGContextConvertRectToDeviceSpace 来完成什么?可能还有其他选择。

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多