可可绘图尺寸(宽度和高度)在OS绘图指南文档中定义如下的点中指定:
一个点相当于1/72英寸
我从这里了解到,一个点就是物理距离。因此,如果我的屏幕是20英寸宽(例如),我将有20x72= 1440点的水平宽度在点工作。换句话说,一个点与设备的分辨率无关。
这似乎不是那么..。
一个使用窗口宽度作为测试的简单可可应用程序显示: 1)当我的分辨率设置为1680x1050时,它的宽度将为1680 点以跨越屏幕的宽度2)类似地,如果我将分辨率更改为2560x1440,则窗口宽度将为2560 points以跨越屏幕的宽度。
同样令人困惑(以一种自相矛盾的方式)的是苹果公司在高分辨率准则文件中所作的声明:
用户空间中的每一点都由四个像素支持。
上述测试似乎表明,当显示分辨率设置为1680x1050时,我的用户空间为1680x1050。如果每个用户点有4个像素,那么这将指向一个有效的“真实”分辨率2倍(1680x1050) = 3360x2100,这比我的13英寸视网膜macbook 2560x1600的本地分辨率还要高。
发布于 2015-01-18 14:03:02
点是一个抽象的虚拟坐标系。其目的是,您通常设计和编写绘图代码的工作点,这将大致符合人类的视觉,补偿不同的物理显示像素密度和显示器与用户的眼睛之间的通常距离。
点与物理距离单位(英寸、厘米等)都没有可靠的关系。或者物理显示像素。
对于屏幕显示,至少有三种不同的测量方法。例如,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
以像素为单位的回退缓冲区: 2560x1600
物理像素: 2880x1800
这实际上将使一切(文本,按钮等)由于映射到相同物理像素的点较少,因此显示更大。每一个点都会更大。不过,请注意,每个点仍然映射到后台缓冲区中的2x2像素正方形。和以前一样,备份缓冲区由硬件缩放到物理显示。这一次,它是稍微上升,而不是下降。(这种缩放与在非Retina液晶显示器上发生的情况相同,当您选择一个像素比物理显示少的模式时。显然,LCD不能改变它所拥有的物理像素数,所以不同的分辨率是通过缩放一个后台缓冲区来实现的。)
等。
https://stackoverflow.com/questions/28009136
复制