为什么 Windows DPI 缩放会使屏幕元素看起来不同?

为什么 Windows DPI 缩放会使屏幕元素看起来不同?

Windows DPI 缩放功能让我恼火的一点是它无法真正将整个桌面按 1:1 的比例展开。下面是直观的示例,说明了我的意思。

100% 缩放

200% 缩放

上面的图片是 100% DPI 缩放的 Windows,下面的图片使用 200% 缩放。请注意,在 200% 缩放下,任务栏图标和功能区选项卡更加挤压在一起,而关闭窗口 x 看起来更小。

但我不明白为什么会发生这种情况。为什么 Windows 不简单地将 100% DPI 界面像素加倍以制作 200% 界面?为什么它最终看起来反而皱巴巴的?有没有办法让 200% DPI 设置真正复制 100% 缩放的对齐方式?

感谢您的帮助。

答案1

这里有一种方法可以(几乎)复制对齐。将屏幕分辨率设置为低于其原始分辨率,并设置 GPU 来拉伸图像。但到处都会出现模糊的文本和模糊的边缘。这是因为当您放大所绘制的所有内容时,您需要一种算法来填充您刚刚创建的空白,这就像将小型 SD 视频放大到全高清一样。您还会注意到,由于分辨率较低,您会失去空间(工具栏将被切断,或者在 Office Ribbon 的情况下自行调整大小),因此无论如何您都不会获得精确的对齐。

DPI 缩放不仅仅是简单地调整所有内容的大小。应用程序本身必须了解缩放并做出相应的反应(调整绘制的图形、字体大小)。问题是大多数程序员都忽略了检查清单(因为您实际上需要重新测试文本布局并重新生成不同的位图图形,如果它不是从主矢量图形渲染的,这会很麻烦)。

由于 Windows 任务栏和 Office 知道 DPI 变化并做出相应反应,因此任务栏图标和功能区选项卡被挤压,而关闭按钮图形看起来更小,因为窗口系统虽然知道 DPI 变化(因此框更大),但没有适当的更大图形在框内呈现。

这是 Metro 界面备受吹捧的优点之一,因为大部分问题都出在 WinForm 渲染系统中,其中 WinForm 是“像素优先”的,每个布局方面都以像素或简单的锚定声明,而 Metro UI 是采用相对布局设计的,可以在不同的分辨率和 DPI 上很好地重新流动而不会破坏所有内容。

相关内容