问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2023-02-01 14:35

我来回答

4个回答

热心网友 时间:2024-10-22 15:33

  从 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 不支持高分」原因在哪里呢?原因有三:
  DPI Virtualization 支持非整比缩放,导致被放大的窗口会变模糊。这是微软的责任,他们应该使用更好的缩放算法,例如 hqx 或者 xBRZ。但是记住,「模糊」是相对显示屏密度而言的,在高密度显示屏上它并没有那么「模糊」。更好的策略可能是像一些游戏机模拟器那样用两个缓冲,一个送显示一个给程序读屏用。
  仍然有大量的应用程序不支持高 DPI。这是第三方的问题。下面详细展开。
  和座标变换相关的问题。这个比较复杂,只会涉及一些跨窗口操作的应用程序和钩子程序,不展开了。
  在第三方应用程序这边,因为系统得知应用是否支持高 DPI 是,应用程序通知系统的,因此就会出现四种情况:
  应用在高 DPI 下运作正常,并通知系统:很好,应用清晰显示,行为正确。微软许多原厂应用(包括 Word 2013、VS2013 等)都能做到这一点。Sublime Text 3 也属于这一类。
  应用在高 DPI 下运作正常,然未通知系统:窗口被放大,应用程序显示模糊但是行为正确。这种应用数量不多,一些 CAD 软件有可能属于这一类(CAD 界使用高分屏已久,不少软件都有不错的高 DPI 支持)。
  应用不支持高 DPI 却错误通知系统:系统不对应用作特别处理导致界面错位或者大小不正确。类似题主中 WPS、Photoshop、Chrome 的情况。还有一种可能是用于启动程序的快捷方式里设定了「在高 DPI 下禁用界面缩放」,QQ 应当是这个问题。(因为写这个答案的时候我同时开着 QQ 和高 dpi,而我能明显看见 QQ 窗口是被放大的。WPS 也可能是这种情况。)

热心网友 时间:2024-10-22 15:33

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

热心网友 时间:2024-10-22 15:34

因为在电脑平台,小尺寸,高分辩率的屏幕还没有普及,所以各软件厂商还没有开发支持高PPI的软件,因此字体是个问题。

热心网友 时间:2024-10-22 15:35

毕竟大多数电脑都是普通1920*1080的,软件厂商都是针对这个分辨率啦设计软件的,所以到了高清屏字体就会显得特别小,这是软件厂商优化的问题,并不是屏幕的问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
远得要命的爱情丁菲是谁演的 远的要命的爱情里的乔佳影是谁演的 远得要命的爱情乔佳影是什么角色 问。。我在厦门办的银行卡回江西可以用吗? 远得要命的爱情中的乔佳影是个怎样的人 厦门农信社的公告出来了,想问一下银行合同制和劳务派遣和正式工的区别... 厦门的信用社银联卡到南宁能不能用?要不要手续费? 泉州农信社年前新办的卡,存了钱,银行说三个工作日后才能动这个钱,为什 ... ...女鞋的话 是不是必须直通车 我们鞋子都是20---50鞋子利润低 直通车... 拼多多直通车200红包(拼多多直通车每天烧1000) 迷你世界集合点怎么做 迷你世界做图怎么分六队 我哥在太阳能呆了两年,由于厂里有拖欠工资的情况和工作有点苦,现在想... 2000左右的手机性价比高点的 用另一个qq号申请怎么申请呢? 河北省医保2023年缴费时间 河北医保缴费截止日期2022 石家庄职工医保需要交多少年 河北医保退休必须交多少年 丝途轮胎是什么品牌 电脑两个系统会不会有冲突 闲事套餐与半年流量包有冲突吗? 小孩读小学可以多去报几个学校吗?有没有冲突 流量包七天和三天的有冲突吗? 大量鱿鱼蛋是怎么来的 海南玖悦坊贸易有限公司怎么样? 有土堆成坡有水连成波,披衣床上坐,被子多暖和,猜字谜的 ...键盘后跳出一排字可选,可以不用鼠标,有什么快捷键把光标移到选项字... 魔兽Lost Temple该用哪族? lost temple是什么意思? 重复发送微信好友会显示几条 刘_遇东坡翻译 刘弇遇苏东坡,带给我们什么样启示 刘弇遇苏轼启示是什么 东坡只打罪人东坡原因是什么是什么 东坡逸事原文及翻译 如何把oppo手机账号换到华为账号并且里面的东西没掉? 12306抢票时间是几点? 厦门医社保缴费标准2023年 2022年厦门医社保缴费标准与2021 厦门医社保缴费标准2023 苹果手机和三星手机哪个好 联想gp70n刻录机使用方法 计算机考研408是什么意思?有什么参考书? 考研408计箄机页题多少分可以上中国地质学校 408考研380分能上什么大学 初三数学几何思路 初三数学几何 初三的数学几何题 电子税务局登录后密码被保存怎么办