C#开发 之 解决win11缩放导致的字体模糊问题

软件编程9个月前更新 阿轩
302 0 0

现在我们的笔记本电脑分辨率很高,基本上能达到1920*1080以上,目前普遍使用的显示器都已经达到了2K到4K的级别。

但是因为我们的笔记本的屏幕小,在非常高的分辨率下,一切看着都很小,尤其是文字,根本看不清,所以Win10很人性化的提供了屏幕缩放功能,一般默认放大比例为150%、200%等,如图所示:

C#开发 之 解决win11缩放导致的字体模糊问题

在这种情况下,我们用C#开发的Winform窗体显示就有问题了,文字和图像都变得模糊了。

C#开发 之 解决win11缩放导致的字体模糊问题

1. 设置Form的DPI模式

首先,我们要设置所有的Form窗口的AutoScaleModeDpi模式。

可以使用代码在Form初始化时设置AutoScaleMode属性。

this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;

或者在每个窗口的属性列表里进行修改。

C#开发 之 解决win11缩放导致的字体模糊问题

2. 添加应用程序清单文件

解决方案资源管理器中,在当前项目上【右键】→ 【添加】→【新建项】

C#开发 之 解决win11缩放导致的字体模糊问题

如果窗口显示默认的 .cs 的类文件,可以点击显示所有模板。

C#开发 之 解决win11缩放导致的字体模糊问题

找到【应用程序清单文件(仅限Windows)】→【添加】

C#开发 之 解决win11缩放导致的字体模糊问题

3、编辑生成的app.manifest文件

编辑生成的app.manifest文件,取消注释其中的 assembly/compatibility/application 下的Windows 10 GUID。

按照下图所示,取消注释部分,保证红框内容可以其作用。

C#开发 之 解决win11缩放导致的字体模糊问题
<System.Windows.Forms.ApplicationConfigurationSection>
    <add key="DpiAwareness" value="PerMonitorV2" /></System.Windows.Forms.ApplicationConfigurationSection>
C#开发 之 解决win11缩放导致的字体模糊问题

之后,运行你的窗体,就可以看到,整个UI以及字体都非常的清晰,下面是对比图

C#开发 之 解决win11缩放导致的字体模糊问题
© 版权声明

相关文章

暂无评论

none
暂无评论...