3

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

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

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

4

1 回答 1

1

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

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

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

你想通过使用来完成CGContextConvertRectToDeviceSpace什么?可能有替代方案。

于 2012-05-09T03:18:37.360 回答