CSharp - C# 检测 Windows 字体大小( 100%,125 %, 150 %)

  显示原文与译文双语对照的内容
131 0

在用户选择 125 % 或者 150 %. 之前,我创建了一个完美的应用程序它会破坏我的应用。之后我发现了一种方法,通过检测DPI来找到字体大小。

在 Windows 7的中文版本开始使用我的应用程序之前,这个工作一直很好。整个应用程序在中文 Windows 7上中断。我可以告诉( 因为我只有英文版和安装语言包,所以我不能真正测试这个问题) 汉字,它导致了一个奇怪的DPI,破坏了我的应用程序。

我的当前代码如下所示:

if (dpi.DpiX == 120)//For 125% fonts
{
//Resize form and set default font to correct problems
}
else if (dpi.DpiX == 96)//For 100 and 150% fonts
{
//Resize form and set default font to correct problems
}

在 Windows 7的英语版本中,但是中文版本跳过了这个,表单破坏了自己,字体很大。

那么,什么是检测 Windows 字体比例( 100% 。125%和 150 %) )的好方法,而不需要检测 API?我需要一些能够在所有 Windows 7操作系统和语言上工作的实体。

时间:原作者:0个回答

68 0

处理可变DPI设置的正确方法是不检测它们,并调整控件的'在 switch 语句中手动大小( 比如说,比示例 if 语句中显示的可以能性更大) ) 。

应该将表单的属性设置为 AutoScaleMode.Dpi,并让框架为你处理这里问题。

将下面的代码添加到窗体( 或者在设计时设置这里属性)的构造函数中:

this.AutoScaleMode = AutoScaleMode.Dpi;

尽管你可能更喜欢使用 AutoScaleMode.Font有关自动缩放的更多信息,请参见文档

原作者:
...