【发布时间】:2012-03-11 12:13:54
【问题描述】:
我创建了一个在用户选择 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”而不是“API”。对不起
-
你所描述的听起来更像是视频驱动程序和/或安装的字体的问题......
-
只是建议:如果你有大量的中国客户,值得花一些时间为
VirtualBox或VmWare创建至少VirtualMachine,这样你就可以在上面测试你的应用了尽可能接近真实操作系统。 -
您可以使用自己的
windows版本,安装中文语言包,将区域设置设置为您的客户位置并进行测试。这需要一天或更长时间 -
为什么 150% 用 96dpi 表示,为什么你认为只有 3 个 dpi 设置?用户可以设置许多其他值。
标签: c# .net winforms windows-7 cjk