以下概念涉及到分辨率、DPI、PPI等,汇总于此,备忘。
英寸: inch,复数:inches;缩写为in或″,或 英吋,简作 吋。1 英寸 = 2.54 厘米(cm)= 25.4 毫米(mm)屏幕尺寸: 指的是一个电子设备的屏幕对角线的长度。例如27寸,指的是屏幕对角线长度为27×2.54 cm=68.58 cm.像素: pixel 或 pel,为影像显示的基本单位,可看作一个点或方块(不是距离单位)。每个像素有自己的RGB值,单位面积的像素越多,则表示其分辨率越高。设备像素(又称为物理像素):指设备能控制显示的最小物理单位,意指显示器上一个个的点。从屏幕在工厂生产出的那天起,它上面设备像素点就固定不变了,和屏幕尺寸大小有关,单位pt。设备独立像素(也叫密度无关像素或逻辑像素): 可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: css像素),这个点是没有固定大小的,越小越清晰,然后由相关系统转换为物理像素。在写程序时,移动鼠标点获取的坐标位置(这是以像素为单位)都是指逻辑像素。
下面代码表示如何获取逻辑像素。
//在win10下验证,只要是是16:9类型(自己的笔记本屏幕是16:9的)的分辨率,//屏幕尺寸指的是屏幕实际显示范围(以mm为单位)//逻辑像素就是所选择的分辨率。//每逻辑英寸像素点数和缩放与比例的设置有关://当缩放比例为100%时,每逻辑英寸像素点数为96;125%→120;150%→144;200%→168HDC hDc = ::GetDC(HWND(NULL));//屏幕的尺寸(屏幕实际显示的尺寸,以mm为单位)int iScreenWidth = ::GetDeviceCaps(hDc, HORZSIZE);int iScreenHgt = ::GetDeviceCaps(hDc, VERTSIZE);//逻辑像素数(和选择的分辨率相同)int pagecx = ::GetDeviceCaps(hDc, HORZRES);int pagecy = ::GetDeviceCaps(hDc, VERTRES);//每逻辑英寸像素点数(和缩放比例相关)short cxInch = ::GetDeviceCaps(hDc, LOGPIXELSX);short cyInch = ::GetDeviceCaps(hDc, LOGPIXELSY);::ReleaseDC(HWND(NULL), hDc);
css像素(也叫虚拟像素): 指的是 CSS 样式代码中使用的逻辑像素,在 CSS 规范中,长度单位可以分为两类,绝对(absolute)单位以及相对(relative)单位。px 是一个相对单位,相对的是设备像素(device pixel)。
设备像素比(devicePixelRatio): 设备像素比 = 设备像素 / 设备独立像素。(在Retina屏的iphone上,DPR为2,1个css像素相当于2个物理像素)。普通密度桌面显示屏的 devicePixelRatio=1;高密度桌面显示屏(Mac Retina)的 devicePixelRatio=2;主流手机显示屏的 devicePixelRatio=2或3;视网膜显示屏 == Retina显示屏
分辨率: 是指宽度上和高度上最多能显示的物理像素点个数(说的是块屏幕的像素尺寸)。例如分辨率为1920×1080p,指的是屏幕横向有1920个物理像素点,纵向有1080个物理像素点。
PPI: Pixels Per Inch的缩写,每英寸的像素个数(此处一英寸为对角线长度、且说的是像素密度)。由 分辨率 中X或Y轴的数字除以该轴的长度(英寸),可得该轴的像素每英寸密度。
DPI: 每英寸的点个数(此处一英寸为对角线长度、且说的是打印点密度)。
PPI 通常使用于计算机屏幕,DPI 通常使用于打印机;但是这两者之间通常被混用,需要在具体的上下文去理解其含义。
点距: 像素与像素之间的距离,点距和屏幕尺寸决定了分辨率大小。高PPI(硬件) + HiDPI渲染(软件) = 更细腻的显示效果(retina)
高分屏:在同样大小的屏幕面积上显示更多的像素点,也就是更多的可视信息。常见的就是SXGA(14001050),UXGA(16001200)。1024*768分辨率的屏幕叫普通屏,也就是XGA的屏幕,这个分辨率以上的屏幕叫高分屏。