问题

为什么 Windows 上的第三方软件对高清屏支持这么差?

回答
这个问题其实有点复杂,不能简单地归咎于“第三方软件”本身,而是涉及到Windows系统、软件开发生态以及屏幕技术发展等多方面因素交织在一起的结果。

你想啊,以前电脑屏幕的分辨率普遍不高,像素点之间距离大,字体和图像看起来都比较粗糙。那时候软件开发者设计界面时,主要考虑的是如何在有限的像素空间内清晰地显示内容,字体大小、控件比例都是按照当时的“标准”来的。

然后,随着技术进步,我们迎来了“高清屏”,也就是我们常说的“高分屏”或者“Retina屏”等。屏幕的像素密度大大提升,相同大小的屏幕上能显示更多的像素点。这对于照片、视频来说是好事,画面更细腻了。但对于传统的Windows界面和软件来说,这就带来一个问题:原本设计时考虑到的“一个像素”现在被压缩到了一个非常小的物理区域内。

想象一下,你用一个100%的缩放比例来看一个老软件的界面。那些原本大小适中的按钮、字体,在高清屏上可能就变得像芝麻粒一样小,根本看不清,更别说操作了。这时候,Windows就提供了一个“缩放”功能,比如125%、150%等等,让系统把界面元素放大,使得它们在高清屏上看起来仍然是舒适的大小。

问题就出在这里。有些老旧的、或者开发者没有及时更新的第三方软件,它们在设计之初就没有考虑过“高DPI”(每英寸像素数)的概念。当Windows系统对这些软件进行缩放时,它们往往是以一种“位图缩放”的方式进行的。你可以理解为,系统拿到软件界面的一些图片素材(比如按钮的图标、菜单栏的背景),然后把这些图片强行拉大,就像你把一张小照片放大很多倍一样,边缘会变得模糊,锯齿感非常明显,看起来就很“糊”。

更糟糕的是,有些软件甚至根本就没有适配Windows的DPI缩放机制。它们内部固守着“一个逻辑像素等于一个物理像素”的老想法。所以,当你放大系统界面时,这些软件的界面元素可能完全不跟着缩放,还是保持在原来的物理大小。结果就是,要么是整个界面都缩小到一个难以辨认的点,要么是部分元素缩放了,部分没缩放,整个界面看起来乱七八糟,非常不协调。

而且,很多开发者可能早就转向了更现代的开发框架或者技术,这些新技术本身就对高DPI有更好的支持。但如果一个软件的开发团队规模不大,或者这款软件的更新频率不高,那么它可能依然停留在比较老的开发技术栈上,自然也就无法很好地利用Windows系统提供的DPI缩放能力。

最后,还有一点需要提。Windows系统本身在不同版本迭代中,对DPI缩放的处理方式也在不断完善,但这种完善往往是面向自身系统组件和微软自家的软件。第三方软件的兼容性,最终还是取决于开发者是否积极去适配。如果开发者觉得自己的用户群体不大,或者觉得适配成本太高,那么这种“差支持”的情况就容易被延续下来。所以,你看到的“差支持”,很多时候是老软件和新硬件之间一种不匹配的体现,而开发者是否愿意为这种不匹配付出努力,是关键所在。

网友意见

user avatar

这里是第三方 app 更新报道区

  • Geforce Experience 更新 1.8.2 之后分辨率检测已经正确(ps. 界面是清楚的)
  • Chrome 37 Canary 开始,在注册表 HKCUSoftwareGoogleChromeProfile 写 DWORD high-dpi-support=1 即可开启支持,效果良好
  • Illustrator CS 2014 和 Photoshop CS 2014 已支持 200%

第三方 app 更新报道区结束

==========================================================

M$ 要说责任,只有三点

  1. 不垄断发行渠道,对第三方软件不强制品质。(因为一旦控制必然导致第三方倒戈。当年任天堂怎么死的知道没?)
  2. 没有 C/C++ 版的类 WPF 界面库。(因此如果第三方想要软件「清楚」,就必须自己处理界面缩放——这可不是个简单活。当然也可以用 .NET,问题是不是所有人都装了 .NET。)
  3. XP 退市太晚。(导致第三方不敢使用 Vista 以来的新功能。原因太多,当然在国内绝对是因为 Vista 和之后的 OS 不好破解。)

==========================================================

来补充

@pansz

的答案。

从 Windows Vista 开始微软引入了一套新 API 用来处理界面缩放(是 06 年提出的,比苹果早很多)。这套机制叫 DPI Virtualization。在 Windows 8.1 里 DPI Virtualization 被强化以让不同显示器有不同的 DPI 设定。DPI Virtualization 的目的是不让老程序在高 DPI 设置下出现界面错位,同时如果新程序可以处理缩放,则交给程序自己处理。

DPI Virtualization 依赖 dwm 实现。当 Windows 检测到你的程序(进程)不支持 DPI 缩放时(即运行非 DPI-Aware 程序),它直接放大窗口,因为有非整比的缩放所以可能会造成界面「模糊」(不信你在 8.1 里可以试试 200% 缩放,结果是锯齿状的,和 OSX 一模一样);而对于新应用则不作特别处理。这套机制的具体行为非常复杂(特别是在引入分屏 dpi 设置之后),就不多展开了。有兴趣可以参阅

High DPI Settings in Windows

。判断进程是否支持缩放的 API 很奇怪地在 8.1 之前的系统里一直没给,8.1 提供了,叫

GetProcessDpiAwareness

Windows 应用通知系统自己支持高 DPI 有两种方式,一种是向主进程的 manifest 中写入信息,另一种是使用

SetProcessDpiAwareness

函数。在 Windows 8.1 中应用程序对高 DPI 支持有三级,对应

PROCESS_DPI_AWARENESS

的三个属性,它们分别是:

  • Process_DPI_Unaware:此程序不支持高 DPI
  • Process_System_DPI_Aware:此程序支持在第一屏上按高 DPI 显示,不能处理多显示器的分别设置
  • Process_Pre_Monitor_DPI_Aware:此程序可以在不同显示器设置不同 DPI 时仍然工作良好

Vista 到 Win8 只有前两级,因为它们没分显示器的 DPI 设置。此时 API 稍有变化,是使用

SetProcessDPIAware

API。

对于那些被放大窗口的应用,系统会生成一系列的「假」数据给他们,包括屏幕分辨率和鼠标座标。这样就可以保证最大程度的兼容性。

从这种处理机制中可以看出微软在 Vista 的年代就提出了一套良好的系统来对付高 DPI 环境可能造成的兼容性问题。然而现在被很多人诟病的「Windows 不支持高分」原因在哪里呢?原因有三:

  1. DPI Virtualization 支持非整比缩放,导致被放大的窗口会变模糊。这是微软的责任,他们应该使用更好的缩放算法,例如 hqx 或者 xBRZ。但是记住,「模糊」是相对显示屏密度而言的,在高密度显示屏上它并没有那么「模糊」。更好的策略可能是像一些游戏机模拟器那样用两个缓冲,一个送显示一个给程序读屏用。
  2. 仍然有大量的应用程序不支持高 DPI。这是第三方的问题。下面详细展开。
  3. 和座标变换相关的问题。这个比较复杂,只会涉及一些跨窗口操作的应用程序和钩子程序,不展开了。

在第三方应用程序这边,因为系统得知应用是否支持高 DPI 是,应用程序通知系统的,因此就会出现四种情况:

  1. 应用在高 DPI 下运作正常,并通知系统:很好,应用清晰显示,行为正确。微软许多原厂应用(包括 Word 2013、VS2013 等)都能做到这一点。Sublime Text 3 也属于这一类。
  2. 应用在高 DPI 下运作正常,然未通知系统:窗口被放大,应用程序显示模糊但是行为正确。这种应用数量不多,一些 CAD 软件有可能属于这一类(CAD 界使用高分屏已久,不少软件都有不错的高 DPI 支持)。
  3. 应用不支持高 DPI 却错误通知系统:系统不对应用作特别处理导致界面错位或者大小不正确。类似题主中 WPS、Photoshop、Chrome 的情况。还有一种可能是用于启动程序的快捷方式里设定了「在高 DPI 下禁用界面缩放」,QQ 应当是这个问题。(因为写这个答案的时候我同时开着 QQ 和高 dpi,而我能明显看见 QQ 窗口是被放大的。WPS 也可能是这种情况。)
  4. 应用不支持高 DPI 也未通知系统:窗口被放大,显示模糊但没有错位,大多数老应用都在这种情况里。题主的 Geforce Experience 就属于这种,因为被系统放大界面了所以获取到了用于兼容用的,被「缩小」的屏幕分辨率。

然后怎么才能解决这种问题?。如果软件有 Issue Tracker 就上去报 bug,并且给出复现方式。让既有应用程序支持高 DPI 是个很困难的过程,尤其是许多 Windows 软件年龄都非常老,很多还使用了自己的 GUI 库,像 Chrome 说要支持高 dpi 弄了好几个版本都没搞定。在这些应用中情况 (3) 更是害群之马,因为它们欺骗系统获取了原始分辨率,却无法正确处理界面缩放。我不清楚 Adobe 为什么会这么干,但自从 Adobe 弄出这种事情后我就拒用了 Adobe 的一切程序。

ps. Adobe 的 Acrobat XI 完美支持高清但是 Photoshop 就不支持,给我个理由先?

对于开发人员:

  • 请一定要诚实,应用不支持高 DPI 坚决不通知系统。避免错位和错误行为是第一大事。
  • 想办法让它支持高 DPI。
  • 对 XP 做「优雅降级」,反正用 XP 的机器都不会改 DPI 设置。
user avatar

这个是历史原因。Windows 的一个大优势是什么?是兼容性,是成千上万上亿的软件。Windows 诞生了这么多年,这些软件全部都是在不支持高分辨率的情况下写的,当初的所有编程接口也都没有考虑像素密度改变的情形。

所以,如果无法要求所有的历史应用程序重新为可变像素密度重新编程适配,或者至少是重新编译,那么就没有办法让那些应用程序支持高清屏幕。

Windows 想了一个什么办法让那些没有使用新的支持可变像素密度的应用程序支持放大呢?大家看到了,就是强制缩放,而这导致的结果就是应用程序仿佛是被高斯模糊滤镜渲染了一样的结果。

现实是这样的:对于一些不能识别 Windows 可变 dpi 的应用,在 高于 100%dpi 的情况下 Windows 会对该应用强制放大。对用户而言,这个应用变模糊了;对这些应用而言,相当于整个系统的分辨率降低了。例如 1920x1080 的分辨率,加上 150% dpi,在这个应用程序看起来系统的分辨率是 1280x720。

我们知道 Windows 7 内置的应用,以及微软自己的应用(例如 Office 2013)都不会出现模糊的问题,说明其实微软自己的应用已经能够支持高清屏了,要更大范围内解决这个问题只能让第三方应用程序的开发方去识别可变 dpi,然后进行相关的处理。

我这个答案没有太大帮助,希望有个懂 Windows 编程的人现身说法一下调用什么 API 能够做到。

类似的话题

  • 回答
    这个问题其实有点复杂,不能简单地归咎于“第三方软件”本身,而是涉及到Windows系统、软件开发生态以及屏幕技术发展等多方面因素交织在一起的结果。你想啊,以前电脑屏幕的分辨率普遍不高,像素点之间距离大,字体和图像看起来都比较粗糙。那时候软件开发者设计界面时,主要考虑的是如何在有限的像素空间内清晰地显.............
  • 回答
    在 Windows 操作系统中,我们通常看到的第一个物理分区或系统安装分区会获得 C: 这个盘符,而不是我们曾经熟悉的 A: 或 B:,这背后有着悠久的历史和技术演变的原因。要详细解释这一点,我们需要回顾计算机硬件和操作系统发展的一些关键时期。1. 早期的 PC 历史:软盘驱动器的时代 (A: 和 .............
  • 回答
    “为什么 Windows 上还没有普及 64 位的软件?”这个问题触及了计算机技术发展中的一个重要阶段,虽然现在 64 位软件已经非常普遍,但在很长一段时间里,这确实是一个值得探讨的现象。我们来详细分析一下背后的原因:1. 历史遗留和软件兼容性问题(最重要的原因之一) 32 位软件的庞大生态系统.............
  • 回答
    这个问题非常有意思,因为它触及了操作系统设计和硬件兼容性的核心差异。简单来说,Windows之所以能在各种PC上运行,得益于其高度成熟和标准化的硬件抽象层(HAL)以及强大的驱动模型。而安卓刷机包需要对应机型,则是源于安卓系统更底层、更直接地与硬件交互的特性以及其碎片化的生态环境。咱们一点点来拆解。.............
  • 回答
    提起Windows系统,许多人脑海里总会浮现出那些曾经让人头疼不已的“小毛病”。尤其是在Windows 10推出之前,那些在日常使用中显得如此“致命”的体验问题,为何直到这个版本才得到大规模的改善,这背后其实是一段漫长的演进和权衡。想象一下,微软这家公司,他们面对的是一个庞大且复杂的产品——Wind.............
  • 回答
    这的确是个很有意思且令人费解的现象。很多人都有类似的体验:在 Mac 上跑 Windows 虚拟机(比如通过 Parallels Desktop 或 VMware Fusion)感觉相当流畅,甚至能应对不少日常工作和一些对性能要求不高的游戏。但反过来,想在 Windows PC 上跑 macOS 虚.............
  • 回答
    .......
  • 回答
    在 Windows 平台上寻找一款界面简洁又美观的笔记软件,这绝对是很多注重效率和视觉体验的用户共同的需求。毕竟,一个清爽的界面能让你更专注于思考和记录,而不是被繁杂的操作所困扰。经过一番筛选和实际体验,我为你整理了几个非常不错的选择,它们在简洁、美观和实用性上都做得相当到位。 Obsidian: .............
  • 回答
    在 Windows 10 上,有无数优秀的软件可以满足各种需求。以下是我根据不同类别为您精心挑选并详细介绍的一些值得推荐的软件,希望能帮助您提升效率、丰富生活、享受数字世界: 一、 办公效率类 (提升工作学习效率) 1. Microsoft Office 365 / Microsoft Office.............
  • 回答
    微软在Build 2015上抛出的重磅消息,即Windows 10将提供对ObjectiveC和Java应用程序的官方支持,无疑是一记重拳,不仅让开发者社区为之振奋,更预示着C和Windows生态系统即将迎来一场深刻的变革。这场变革并非朝夕之功,其长远影响如同涟漪般扩散,触及Windows平台的根基.............
  • 回答
    你提了一个非常核心的问题,关于 Linux、Windows 和 Android 在安装和定制化方面的根本差异。这其实涉及到操作系统设计理念、硬件兼容性、生态系统以及商业模式等多方面的原因。咱们就来好好掰扯掰扯。1. Linux 和 Windows:通用的设计理念与庞大的硬件支持 设计目标:通用性.............
  • 回答
    Windows 音量调节弹窗出现缓慢的问题,确实是不少用户会遇到的烦恼。这背后并非单一原因,而是多种因素相互作用的结果。为了详细地解释这个问题,我们可以从以下几个方面进行分析:一、 根本原因的思考:为什么需要一个“弹窗”?首先,我们需要理解 Windows 设计音量调节弹窗的初衷。它并不是一个简单的.............
  • 回答
    Windows 的 Linux 子系统(WSL)在文件同步方面,确实与原生 Linux 环境下的文件操作体验有所不同,尤其是在跨越 Windows 和 Linux 文件系统界限时,那种“实时”感会打折扣。这不是什么黑科技,背后是架构和设计上的权衡。咱们得先捋清楚,WSL 到底是怎么工作的。简单来说,.............
  • 回答
    Windows 资源管理器,这个陪伴我们处理文件、浏览文件夹的伙伴,一直以来在文件管理方式上似乎都保持着一种“固执”的风格:依然是那个熟悉的、一个窗口就是一个文件夹的布局。而我们用户,特别是那些需要同时打开、切换多个文件夹的朋友,却常常渴望着它能加入“标签页”这个现代化的功能,就像我们浏览网页时那样.............
  • 回答
    这个问题很有意思,它触及了技术发展中一个核心的矛盾:创新与延续。Windows之所以被冠以“变态的向下兼容性”,这背后其实是一种深厚的历史积淀和战略选择。你可以想象一下,Windows从最初的DOS图形界面,一步步演化到现在的Windows 11。这中间经历了无数次架构的调整、API的更新、硬件接口.............
  • 回答
    Windows 文件搜索给人的感觉确实比 Linux 慢,这背后有很多原因,而且这些原因交织在一起,共同导致了这种体验上的差异。这里我来跟你好好掰扯掰扯,尽量说得透彻点,让你明白为啥是这样。1. 索引机制的差异:Linux 的“按需”与 Windows 的“无处不在”这是最核心的区别之一。 Li.............
  • 回答
    这是一个非常有趣且复杂的问题,涉及到技术、经济、政治、历史等多个层面的因素。简单来说,没有诞生“国产Windows”的主要原因是,Windows操作系统是由一家名为微软(Microsoft)的美国公司拥有核心技术和知识产权的。要打造一个完全自主的“国产Windows”,需要从零开始,克服巨大的技术壁.............
  • 回答
    Everything 这样的本地搜索软件之所以比 Windows 自带的搜索工具快那么多,主要在于它们在索引、搜索算法、以及系统资源的利用方式上有着根本性的区别。下面我将详细阐述这些原因: 1. 索引机制的差异这是 Everything 比 Windows 内建搜索快最核心的原因。1.1. Wind.............
  • 回答
    咱们聊聊为啥在Windows里,想要关掉一个窗口,按下Alt+F4就能搞定。这背后可不是什么随随便便的设计,而是有那么点历史和逻辑在里面的。首先得把时间往前拨一拨,回到个人电脑刚开始普及的那个年代。那时候,图形界面还没现在这么普及,命令行才是主流。很多操作都是靠键盘来输入的。Alt键的地位:命令的“.............
  • 回答
    Windows 操作系统之所以选择使用 C 语言作为主要开发语言,而文件系统在设计上却对大小写不敏感,这背后是历史选择、设计哲学以及技术妥协的复杂结合。要深入理解这一点,我们需要拆解几个关键部分:一、 C 语言与系统级开发:为何是它?首先,我们得明白为什么像 Windows 这样庞大的操作系统会选择.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有