问题背景
最近在写一个 WinForm 程序,在不同系统终端测试的时候发现原本在 Windows 7 系统上能够高清显示的程序,在搭配了更高分辨率屏幕的 Windows 10 系统终端上出现了界面模糊的现象,查阅资料并多次尝试后终于解决了这个问题,记录在此。
问题原因
WinForm 对高分辨率屏幕的适配并不是很好,当分辨率较高时,Windows 系统会将程序里面的字体进行缩放,在 Windows 10 系统尤其严重,这将导致程序的界面大小变化,字体也会变得模糊。
解决方法
知道了导致程序模糊的原因,找到相应的解决方法就很简单了,我们只需要让程序感知 DPI ,当 DPI 较高时禁止 Windows 对其进行自动缩放。
注意事项:该方法适用于 .NET Framework 版本大于等于4.5的程序。
具体步骤如下:
-
右键项目,添加
应用程序清单文件
。
-
将
应用程序清单文件
中的部分代码取消注释。
-
在程序配置文件(app.config)的
appSettings
节点下添加如下代码<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
-
重新编译生成项目,打开程序查看效果。