字体向后不兼容
Posted
技术标签:
【中文标题】字体向后不兼容【英文标题】:Font backward incompatibility 【发布时间】:2010-11-03 06:17:46 【问题描述】:我正在为我的 winforms 应用程序使用 Segoe UI。
在 XP 上,这种字体不存在,我想让我的应用使用 Verdana。
实现这一目标的最佳方法是什么。
【问题讨论】:
【参考方案1】:你想要的是这样的:
Font GetUIFont()
Font testFont = new Font("Segoe UI", 10f);
if (testFont.Name == "Segoe UI")
return testFont;
else
return new Font("Verdana", 10f);
【讨论】:
...但是您如何为应用程序中的每个表单和控件自动执行此操作?你如何确保布局仍然正确?等等等等。 你可以做的是从 Form 派生,然后使用你的派生类。在派生表单的构造函数中,您可以调用 GetUIFont 方法来设置表单的字体,然后将其自动设置。至于布局,当我更改字体大小时,我总是看到我的表单会自动调整。你可能不得不玩弄那个,如果你有问题,你可以随时在这里寻求帮助。 ;)【参考方案2】:从 JasonH 的解决方案开始,包括从 Form 派生的部分。如果您对不自动继承表单字体的控件有问题,请在您的表单具有所有控件时调用此代码:
foreach (Control ctl in this.Controls)
ctl.Font = GetUIFont();
【讨论】:
【参考方案3】:最好使用默认(系统)字体来获得原生外观。因此,Vista 使用“Sergoe UI”作为默认字体,而 XP 使用“Tahoma”(不是“Verdana”)。要获取默认对话框字体,请使用 SystemFonts 类:
protected override void OnLoad(EventArgs e)
base.OnLoad(e);
Font = SystemFonts.DialogFont;
【讨论】:
以上是关于字体向后不兼容的主要内容,如果未能解决你的问题,请参考以下文章
automake 1.12 更改 bison/yacc 输出名称,向后不兼容的更改?
从GWT 2.7更新到2.8.1后不兼容的RemoteServiceException