现在我们的笔记本电脑分辨率很高,基本上能达到1920*1080以上,目前普遍使用的显示器都已经达到了2K到4K的级别。
但是因为我们的笔记本的屏幕小,在非常高的分辨率下,一切看着都很小,尤其是文字,根本看不清,所以Win10
很人性化的提供了屏幕缩放功能,一般默认放大比例为150%、200%等,如图所示:
在这种情况下,我们用C#
开发的Winform
窗体显示就有问题了,文字和图像都变得模糊了。
1. 设置Form的DPI模式
首先,我们要设置所有的Form
窗口的AutoScaleMode
为Dpi
模式。
可以使用代码在Form初始化时设置AutoScaleMode
属性。
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
或者在每个窗口的属性列表里进行修改。
2. 添加应用程序清单文件
解决方案资源管理器中,在当前项目上【右键】→ 【添加】→【新建项】
如果窗口显示默认的 .cs 的类文件,可以点击显示所有模板。
找到【应用程序清单文件(仅限Windows)】→【添加】
3、编辑生成的app.manifest
文件
编辑生成的app.manifest
文件,取消注释其中的 assembly/compatibility/application 下的Windows 10 GUID。
按照下图所示,取消注释部分,保证红框内容可以其作用。
然后在 App.config 底下加入(这一步不需要,不然配置文件需要和exe放一起才行单独):
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
之后,运行你的窗体,就可以看到,整个UI以及字体都非常的清晰,下面是对比图