可可绘图尺寸(宽度和高度)在OS X Cocoa绘图指南文档中按如下定义的点指定:
"单个点相当于1/72英寸"
我从中理解,一个点是物理距离。因此,如果我的屏幕宽度为20英寸(例如),我将在点中使用20 x 72 = 1440点水平宽度。换句话说,一个点与设备的分辨率无关。
这似乎不是这样......
使用窗口宽度作为测试的简单可可应用程序显示: 1)当我的分辨率设置为1680x1050时,宽度为1680 点跨越屏幕宽度 2)同样,如果我将分辨率更改为2560x1440,则窗口宽度为2560 点以跨越屏幕宽度
同样令人困惑(以相互矛盾的方式)是高分辨率指南Apple文件中的陈述:
用户空间中的每个点都有四个像素支持
以上测试似乎表明,当我的显示分辨率设置为1680x1050时,我的用户空间为1680x1050。如果每个用户点有4个像素,那么这将指向一个有效的"真实"分辨率为2倍(1680x1050)= 3360x2100,超过我的13英寸视网膜macbook pro 2560x1600的原始分辨率。
答案 0 :(得分:3)
点是一个抽象的虚拟坐标系。目的是您通常设计和编写绘图代码以在点上工作,这将与人类视觉大致一致,补偿不同的物理显示像素密度以及显示器与用户眼睛之间的通常距离。
点与物理距离单位(英寸,厘米等)或物理显示像素之间没有可靠的关系。
对于屏幕显示,至少有三种不同的测量值。例如,Retina MacBook Pro的屏幕具有2880x1800物理像素。在默认模式下,它映射到1440x900点,因此每个点都是2x2像素的正方形。这就是为什么这样的系统上的窗口具有与非Retina MacBook Pro上的相同窗口相同的视觉尺寸,其中具有1440x900物理像素的屏幕被映射到1440x900点。窗口以点为单位进行测量,因此占据屏幕空间的相同部分。但是,在Retina显示屏上,有更多的像素可以提供更精细的细节。
但是,还有另一层复杂性可能。您可以将Retina系统配置为以某些细节为代价在屏幕上显示更多内容。您可以选择1920x1200点的显示模式。在该模式下,渲染是对3840x2400像素的后备缓冲区进行的。这允许以更高的细节水平进行渲染,但保持数学简单;点仍然映射到2x2像素的正方形。 (这种简单的数学运算还可以避免在绘制邻接的位图图像时出现接缝问题。)但3840x2400大于显示硬件中的物理像素数。因此,当实际在屏幕上绘制到物理2880x1800像素时,后备缓冲区会缩小。这会从后备缓冲区中丢失更高细节的,但结果仍然比物理1920x1200屏幕或将1920x1200渲染放大到物理2880x1800屏幕更精细。
所以,对于这种配置:
屏幕尺寸:1920x1200
内存中像素的后备缓冲:3840x2400
显示硬件中的物理像素:2880x1800
其他配置当然是可能的:
屏幕尺寸:2880x1800
Backbuffer,以像素为单位:2880x1800
物理像素:2880x1800
一切都会变得非常小,但你可以在屏幕上显示很多东西(例如很多行文字)。
屏幕尺寸:1280x800
Backbuffer,以像素为单位:2560x1600
物理像素:2880x1800
这实际上会使所有内容(文本,按钮等)看起来更大,因为映射到相同物理像素的点数更少。每个点都会更大。但请注意,每个点仍然映射到后备缓冲区中的2x2像素方块。和以前一样,后备缓冲区由硬件缩放到物理显示器。这次它的规模略有扩大而不是下降。 (当您选择像素比物理显示器更少的模式时,此缩放与非Retina LCD显示器上的相同。显然,LCD不能改变它具有的物理像素数,因此不同的分辨率是通过缩放后备缓冲来完成。)
等