开了 150% 缩放之后:逻辑分辨率、DPR,以及为什么只有某几个软件是糊的

· 约 5 分钟 🖥️ 屏幕尺寸计算

买了 27 寸 4K,第一次开机字小得看不清。开 150% 缩放,舒服了——但某几个软件看上去发虚,而别的很锐利。

这两件事都不是显示器的问题。它们来自同一件事:屏幕上同时存在三个「分辨率」。

三个分辨率

名称27 寸 4K @ 150%是什么
物理分辨率3840 × 2160面板上真实的像素数,出厂就定死了
逻辑分辨率2560 × 1440界面按这个尺寸排版,也叫「点」或 CSS 像素
渲染分辨率视系统而定系统实际画了多大的一张图

前两者的比值就是缩放倍率,在网页里叫 devicePixelRatio(DPR):

DPR = 物理分辨率 ÷ 逻辑分辨率 = 3840 ÷ 2560 = 1.5

界面元素按逻辑像素排版,然后按 DPR 映射到物理像素上。 一个「100 点高」的按钮,在 DPR = 1.5 的屏上占 150 个物理像素。

这就解释了那个最常见的困惑:截图比你以为的大。截图按物理像素存,全屏截图是 3840×2160,而你排版时看到的是 2560×1440。

至于为什么高 PPI 屏非缩放不可——像素变密了但界面元素的像素数没变,尺寸自然就缩了。27 寸 4K 的 163 PPI 下,一个 100 像素高的按钮只有 1.6 cm,而在 24 寸 1080p(92 PPI)上是 2.8 cm。这层关系和「看不出像素的距离」怎么算,在 屏幕尺寸计算 上可以直接得到。

macOS:先放大两倍,再缩回去

苹果的做法是只承认 1× 和 2× 两种后备缓冲。系统设置里的「看起来像 2560×1440」不是真的按 2560 渲染,而是:

按 2 倍的逻辑分辨率渲染:5120 × 2880
再降采样到面板的物理分辨率:3840 × 2160

好处是界面元素的几何关系永远是整数倍,不会出现半像素;代价有两个:

  • GPU 要多画不少像素,高负载场景下能感觉到
  • 降采样带来轻微软化 —— 5120 缩到 3840 不是整数比,细线条会被平滑掉一点点

所以在 4K 屏上,「看起来像 1920×1080」反而是最锐利的一档:按 3840×2160 渲染,正好和面板 1:1,一次采样都不用做。代价是可用空间只有 1080p 那么多。

MacBook 自带屏是另一回事——它们的物理分辨率本来就是设计来做 2× 的(比如 2560×1600 对应逻辑 1280×800),默认档位就是 1:1,最清晰。

Windows:按程序分级

Windows 走的是另一条路——不统一处理,而是让每个程序自己声明它能应付到哪一步。这就是为什么同一台机器上有的软件糊、有的不糊。

四个级别:

级别行为表现
Unaware完全不知道有缩放系统按小尺寸渲染再位图拉伸
System DPI aware按主显示器的缩放渲染一次单屏正常;拖到缩放不同的第二块屏就糊
Per-Monitor收到 DPI 变化通知基本正确
Per-Monitor V2连菜单、对话框、非客户区一起跟随正确

老工具、老安装程序、部分行业软件停留在前两级,它们发虚不是渲染质量问题,是被系统当图片拉伸了

能做的补救:在那个程序的 exe 上右键 → 属性 → 兼容性 → 更改高 DPI 设置,把「高 DPI 缩放替代」交给应用程序自己处理。部分软件会明显改善,也有的会变成元素过小——两害相权。根治只能等作者更新。

非整数缩放为什么更容易发虚

125%、150% 这类倍率下:

1 逻辑像素 = 1.25 或 1.5 个物理像素

一条 1 像素的边框映射过去是 1.25 个物理像素,落不到整数网格上。渲染管线只能做插值,结果就是边线发灰、发虚。

矢量图形和文字通常处理得不错(字体渲染会做网格拟合),但位图资源躲不掉:图标按 1× 做的,在 1.5× 下被拉伸;按 2× 做的,在 1.5× 下被缩小。两种都不是 1:1。

所以:

  • 200%(整数倍)兼容性最好,老软件也不容易出问题
  • 150% 是效果和空间的折中,绝大多数现代软件没问题
  • 125% 最容易暴露问题,因为半像素的偏移最明显

浏览器里的对应关系

网页开发踩的是同一套坑,只是名字不同:

window.devicePixelRatio   // 1.5、2、3……
  • CSS 里的 1px 是逻辑像素,不是物理像素
  • 位图要提供 @2x@3x 版本,或者用 srcset 让浏览器按 DPR 挑
  • SVG 和 icon font 天生不受影响,任何倍率下都锐利
  • canvas 需要手动把画布的 width/height 设成 CSS 尺寸 × DPR,否则在高分屏上是糊的——这是最常见的一个疏漏

混用不同 DPI 的显示器

笔记本内屏 200% + 外接 1080p 显示器 100%,是最容易出问题的组合:

  • 只支持 System DPI aware 的程序按主屏的倍率渲染,拖到另一块屏就被拉伸
  • 有些程序需要重启才会按新屏幕重新渲染
  • 窗口跨在两块屏之间时,两边都不完全对

缓解思路:尽量让两块屏的缩放比例相同或成整数倍(比如都 100%,或者 200% + 100%);把常用程序固定在一块屏上;注销重登能让大部分程序重新读取 DPI 设置。

注意这和刷新率跑不满是两回事,后者是线材带宽、系统设置、显卡策略的问题,排查顺序见 浏览器测出来的 Hz 比标称低

选缩放档位的实用顺序

  1. 先算 PPI屏幕尺寸计算 输入尺寸和分辨率即得)
  2. 按 PPI 取一个起步档
PPI起步缩放
< 110100%
110 – 140100% – 125%
140 – 180125% – 150%
180 – 220150% – 175%
> 220200%
  1. 坐正常距离看半小时,字费劲就升一档,觉得内容装不下就降一档
  2. 发现个别软件糊,单独调那个程序的高 DPI 兼容设置,不要为它改全局

顺带一提,如果你需要在屏幕上量真实尺寸(比如比对卡片、印刷稿),缩放会让在线尺子失准,校准方法见 屏幕尺子怎么校准

缩放档位没有标准答案,它取决于坐姿距离和视力。上表只是起步值,最终以自己看半小时之后的感受为准。

❓ 常见问题

为什么截图出来的像素尺寸比我以为的大?

因为截图按物理像素存,而你看到的布局是按逻辑像素排的关系:物理像素 = 逻辑像素 × 缩放倍率。例子:(1) 27 寸 4K 开 150% 缩放,逻辑分辨率是 2560×1440,但全屏截图是 3840×2160;(2) MacBook 的 2 倍屏上截一个「看起来 800 宽」的窗口,文件是 1600 宽。好处:截图自带高分辨率,缩小后特别锐利。麻烦:(1) 做 UI 标注时量出来的数字是设计稿的两倍,要先除掉倍率;(2) 发给别人看时文件偏大。网页里对应的量是 devicePixelRatio,在控制台敲它就能知道当前倍率。

为什么有的软件字很糊,同一台电脑上别的软件却很清楚?

因为每个程序自己声明了它支持到哪一级的 DPI 感知,系统按声明区别对待Windows 上分四级:(1) Unaware —— 程序完全不知道有缩放这回事,系统只能把它按小尺寸渲染再位图拉伸,于是发虚。老工具、老安装包、部分行业软件都在这一类;(2) System DPI aware —— 按主显示器的缩放渲染,单屏正常,一旦拖到缩放比例不同的第二块屏就糊;(3) Per-Monitor 和 (4) Per-Monitor V2 —— 能跟着每块屏各自的缩放实时重排,是正确的做法。能做的:在那个程序的 exe 上右键 → 属性 → 兼容性 → 更改高 DPI 设置,把缩放交给应用程序自己处理,部分软件会明显改善。根治只能等作者更新

27 寸 4K 到底该开多少缩放?

先算 PPI,再按可用空间取舍27 寸 4K 的 PPI 约 163,常见的三个选择:(1) 150% —— 逻辑分辨率 2560×1440,元素大小和 27 寸 2K 屏一样,但细腻度翻倍,多数人的答案;(2) 200% —— 逻辑 1920×1080,元素偏大,可用空间明显变少,适合视力吃力或坐得远;(3) 100% —— 逻辑就是 3840×2160,能装下极多内容,但 163 PPI 下的默认字号在一臂距离基本读不了。别忽略的一点:Windows 上 150% 是非整数倍,少数老软件会发虚;200% 是整数倍,兼容性最好。屏幕尺寸、PPI 和「看不出像素的距离」可以在 屏幕尺寸计算 上直接算。

笔记本外接显示器之后,为什么窗口一拖过去就糊?

两块屏的缩放比例不同,而那个程序只支持单一 DPI典型组合:笔记本内屏高 PPI 开 200%,外接的 1080p 显示器开 100%,两者差一倍。表现:(1) 只声明 System DPI aware 的程序按主屏的倍率渲染一次,拖到另一块屏上由系统拉伸,于是糊;(2) 有些程序要重启才会按新屏幕重新渲染;(3) macOS 上把窗口跨在两块屏之间时也会短暂发虚。缓解办法:(1) 尽量让两块屏的缩放比例相同或成整数倍;(2) 把主要工作的程序固定在一块屏上;(3) Windows 的高 DPI 兼容性设置里逐个调;(4) 注销重登能让大部分程序重新读取 DPI 设置。这不是显卡或线材的问题,和刷新率上不去是两回事,后者见 浏览器测出来的 Hz 比标称低

🖥️ 打开 屏幕尺寸计算 对角线+分辨率算 PPI·实际宽高厘米·点距·缩放建议

🔗 相关阅读

全部教程 →