Lan*_*ens 40 .net c# cjk windows-7 winforms
我创建了一个完美的应用程序,直到用户选择125%或150%.这会打破我的申请.我后来找到了一种通过检测DPI来找到字体大小的方法.
在中文版的Windows 7开始使用我的应用程序之前,这一点很有效.整个应用程序在中文窗口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
}
Run Code Online (Sandbox Code Playgroud)
在Windows 7的英文版本中工作得很好,但不知何故中文版本跳过这个,并且表单会自行破坏,控件甚至不显示,字体非常大并且超越问题,图片框被移动.
那么在不检测API的情况下检测Windows字体比例(100%,125%和150%)的好方法是什么?我需要一些可以在所有Windows 7操作系统和语言上运行的实用程序.
Cod*_*ray 18
处理变量DPI设置的正确方法是不检测它们并在switch语句中手动调整控件的大小(对于初学者来说,可能性比您在示例if语句中显示的更多).
相反,您应该将表单的AutoScaleMode属性设置为AutoScaleMode.Dpi并让框架为您处理此问题.
将以下代码添加到表单的构造函数中(或在设计时设置此属性):
this.AutoScaleMode = AutoScaleMode.Dpi;
Run Code Online (Sandbox Code Playgroud)
虽然您可能更喜欢使用AutoScaleMode.Font.有关自动扩展的详细信息,请参阅MSDN文档.
| 归档时间: |
|
| 查看次数: |
70586 次 |
| 最近记录: |