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

问题背景

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

问题原因

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

解决方法

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

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

具体步骤如下:

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

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

  3. 在程序配置文件(app.config)的appSettings节点下添加如下代码

    <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    

    修改程序配置文件

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

原文地址:https://www.cnblogs.com/alittlecooing/p/WinForm-HighDPI.html