前段时间在开发一个坐标转换程序,开发环境是Windows10 64位专业版(V1803)和Visual Stuido 2015社区版,电脑屏幕是15.6英寸分辨率1920*1080,采用的是WinForm程序设计方法开发。在程序运行时遇到了这样一个问题,在Visual Studio设计的很清晰的菜单和界面,运行的时候菜单和控件上字体变得很模糊,界面大小也发生了变化。于是上网寻求解决办法,网友给出的解决方案有以下3种:
- WinForm对高分屏的支持不好,用WPF程序设计可以解决该问题。(这是一个可行的办法,但是短期内较好的掌握WPF,并用WPF技术重现实现软件不太现实)
- 更改窗体的AutoScaleMode属性为Font,并在窗体的构造函数中增加两行代码调整窗体上字体的大小。本人反复尝试,该方法行不通。
- 更改程序的配置文件,在里面添加几行代码,使程序运行时自动检测屏幕分辨率,在高分屏时禁用系统缩放。本人查阅了多个博客,其给出的代码都不可用,而且明显是从同一人处复制粘贴的,根本没有经过检验。
第三种方案的解决思路是正确的,就是要检测屏幕的分辨率,高分屏时禁用系统的缩放,因为现在Win10 高分屏默认字体放大125,这样会导致我们在程序中设计好的界面字体模糊。但是第三种方案所说的添加代码是错误的,微软已经为我们考虑了很多,WinForm默认清单文件里已经加入了对禁用高分屏自动缩放的支持,只是被注释掉了,我们只需要去掉一个小小的注释符,就可以解决这个问题。
以下是具体的步骤:
1.选择当前项目,单击鼠标右键,选择“添加”-“类”
2.选择应用程序清单文件
3.打开刚才建立的清单文件,找到下图中所示语句,删除红线框中的两行,然后保存再运行即可。