点是一个抽象的虚拟坐标系。目的是您通常设计和编写绘图代码以点为单位工作,这将与人类视觉大致一致,补偿不同的物理显示像素密度和显示器与用户眼睛之间的通常距离。
点与物理距离单位(英寸、厘米等)或物理显示像素没有可靠的关系。
对于屏幕显示,至少有三种不同的测量值。例如,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 后
缓冲区(以像素为单位):2880x1800
物理像素:2880x1800
一切都非常小,但您可以在屏幕上放置很多东西(例如多行文本)。
Screen size in points: 1280x800
Backbuffer in pixels: 2560x1600
Physical pixels: 2880x1800
This will actually make everything (text, buttons, etc.) appear larger since there are fewer points mapped to the same physical pixels. Each point will be physically larger. Note, though, that each point still maps to a 2x2-pixel square in the backbuffer. As before, the backbuffer is scaled by the hardware to the physical display. This time it's scaled up slightly rather than down. (This scaling is the same thing as happens on a non-Retina LCD display when you select a mode with fewer pixels than the physical display. Obviously, an LCD can't change the number of physical pixels it has, so the different resolution is accomplished by scaling a backbuffer.)
Etc.