相信Win10+1080p屏幕的笔记本是绝大部分人在可移动电脑上的选择。然鹅,绝大部分的软件是在缩放比正常(即100%)的台式电脑上设计制作的。dpi缩放的确让大部分软件的文字在小尺寸的高分屏上有令人可以接受的大小,随之而来的是非倍数比例的缩放在离散的像素点上,相当不尽人意的表现。(当然,若是不介意文字是糊的话,此文就没什么阅读的意义了)

不知是不是Win10内部交流的不顺利,身为系统组件本身的管理控制台mmc.exe和资源监视器perfmon.exe竟然都是糊的。被这个问题困扰了一年有余,今日在写java awt(不要问我为什么作死用awt,年少轻狂啊)时,被Win10(可能不止?待测试)窗体的内边距玩的欲哭无泪,不知咋地又想到这个问题,就神奇的找到了一篇文章(见文尾)。本来是用来解决vs的缩放问题的,结果被我反着一用,倒还解决了一个陈年老题。。方法如下

(大概是)强制决定dpi缩放功能是否开启的路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\

在这个项下新建如下的结构,即可实现在第三方程序属性选项卡中“高dpi时禁用缩放”的相同功能。

...
  └-Image File Execution Options
       └-executable_name
            └-dpiAwareness: DWORD = 0

亦即在Image File Execution Options项下建立一个目标程序的文件名(不带路径,要扩展名)的新项(原有就不用新建了),再在项下建立一个新DWORD值,名为dpiAwareness,十/十六进制都可以(0-9的十和十六进制整数表达相同),0代表禁用,1代表启用。例如开头所说的解决系统程序糊的问题,将dpiAwareness设置为1即可。

差点忘了,最后还要diss一下Win10自带的最大号病毒——Windows Update

参考: https://www.cnblogs.com/DoNetCShap/p/10280920.html

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

2022/3/11更新

https://docs.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process

根据巨硬官网所说,在1607版本开始,是提供了按显示器设置的缩放功能的(per-monitor DPI awareness),足以解决在缩放比例不同的显示屏上糊的问题。然而搜索一圈并没有发现网上有详细说这个功能怎么在注册表里用的。但是经过大胆尝试后,发现将dpiAwareness设置成2就可以开启该功能,妈妈再也不用担心我的VS在副屏上是糊的了

标签: none

添加新评论