C# WinForm在高分辨率下界面模糊问题的解决

前言

昨天刚搞定了DevExpress,今天就遇到了之前遇到过的一个问题,那就是WinForm在高分辨率下界面模糊。我的开发环境是Windows10 64位和VS2010,电脑屏幕分辨率为1920*1080,采用的是WinForm程序设计方法开发。在程序运行时遇到了这样一个问题,在VS设计的很清晰的菜单和界面,运行的时候菜单和控件上字体变得很模糊,界面大小也发生了变化。于是上网寻求解决办法,网友给出的解决方案有以下3种。

  • WinForm对高分屏的支持不好,用WPF程序设计可以解决该问题。(这是一个可行的办法,但是短期内较好的掌握WPF,并用WPF技术重现实现软件不太现实)
  • 更改窗体的AutoScaleMode属性为Font,并在窗体的构造函数中增加两行代码调整窗体上字体的大小。本人反复尝试,该方法行不通。
  • 更改程序的配置文件,在里面添加几行代码,使程序运行时自动检测屏幕分辨率,在高分屏时禁用系统缩放。

第三种方案的解决思路是正确的,就是要检测屏幕的分辨率,高分屏时禁用系统的缩放,因为现在Win10 高分屏默认字体放大125,这样会导致我们在程序中设计好的界面字体模糊。

具体步骤

  1. 选择当前项目,单击鼠标右键,选择【添加】|【类】;
  2. 选择【应用程序清单文件】;
  3. 打开刚才建立的清单文件,添加下面的代码;
  4. 保存运行,发现修复了界面模糊问题。
<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
  </windowsSettings>
</application>

  PS:有时候按照上面步骤可能不成功,关掉程序重新打开运行后发现分辨率已协调,亲测有效。

转自:https://zhuanlan.zhihu.com/p/128588859

原文地址:https://www.cnblogs.com/qdmb/p/13413452.html