发布于 

WinForm分辨率适应-高DPI自动缩放

问题背景

最近在写一个 WinForm 程序,在不同系统终端测试的时候发现原本在 Windows 7 系统上能够高清显示的程序,在搭配了更高分辨率屏幕的 Windows 10 系统终端上出现了界面模糊的现象,查阅资料并多次尝试后终于解决了这个问题,记录在此。

问题原因

WinForm 对高分辨率屏幕的适配并不是很好,当分辨率较高时,Windows 系统会将程序里面的字体进行缩放,在 Windows 10 系统尤其严重,这将导致程序的界面大小变化,字体也会变得模糊。

解决方法

知道了导致程序模糊的原因,找到相应的解决方法就很简单了,我们只需要让程序感知 DPI ,当 DPI 较高时禁止 Windows 对其进行自动缩放。

注意事项:该方法适用于 .NET Framework 版本大于等于4.5的程序。

具体步骤如下:

  1. 右键项目,添加应用程序清单文件

添加应用程序清单文件

  1. 应用程序清单文件中的部分代码取消注释。

取消注释部分代码

  1. 在程序配置文件(app.config)的appSettings节点下添加如下代码
1
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />

修改程序配置文件

  1. 重新编译生成项目,打开程序查看效果。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @吴咕咕 创建,使用 Stellar 作为主题。