现在我们的笔记本电脑分辨率很高,基本上能达到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文件,取消注释其中的 assembly/compatibility/application 下的Windows 10 GUID。
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
然后在 App.config 底下加入:
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
之后,运行你的窗体,就可以看到,整个UI以及字体都非常的清晰,下面是对比图:
全文完,如果觉得写得不错,那就点个赞或者“在看”吧,最好能加个星标,因为微信的规则改了太多,多谢阅读。