我创建了一个应用程序,该应用程序在用户选择 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 上,效果很好,但不知何故,中文版直接跳过了这一点,并且表单自行破坏,控件甚至不显示,字体非常大,超出了问题,图片框被移动。
那么有什么好方法可以在不检测 DPI 的情况下检测 Windows 字体比例(100%、125% 和 150%)呢?我需要一些可以在所有 Windows 7 操作系统和语言上运行的可靠工具。
处理可变 DPI 设置的正确方法不是检测它们并手动调整控件的大小。switch
声明(对于初学者来说,可能性比您在示例中显示的可能性要多得多if
陈述)。
相反,您应该设置AutoScaleMode财产 http://msdn.microsoft.com/en-us/library/system.windows.forms.containercontrol.autoscalemode.aspx您的表格AutoScaleMode.Dpi
并让框架为您处理这件事。
将以下代码添加到表单的构造函数中(或在设计时设置此属性):
this.AutoScaleMode = AutoScaleMode.Dpi;
尽管您可能更喜欢使用AutoScaleMode.Font
。有关自动缩放的更多信息,请参阅MSDN 文档 http://msdn.microsoft.com/en-us/library/ms229605.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)