【发布时间】:2011-05-05 16:44:30
【问题描述】:
对于 Windows 应用程序 (C#),是否可以调整整个应用程序(包括所有表单)以使用系统字体设置来调整大小而不是使用固定大小?
这适用于在其机器上设置了较大字体大小的视力障碍用户。应用程序是否可以根据用户的字体调整字体。
【问题讨论】:
对于 Windows 应用程序 (C#),是否可以调整整个应用程序(包括所有表单)以使用系统字体设置来调整大小而不是使用固定大小?
这适用于在其机器上设置了较大字体大小的视力障碍用户。应用程序是否可以根据用户的字体调整字体。
【问题讨论】:
如果您希望您的应用程序按系统字体缩放,您应该将所有表单的AutoScaleMode 属性设置为值AutoScaleMode.Font,如果您希望它按Windows DPI 设置缩放,则应设置为AutoScaleMode.Dpi。
在这里您可以找到更多信息 - http://msdn.microsoft.com/en-us/library/ms229605.aspx
【讨论】:
在表单的构造函数中(在调用InitializeComponent() 之前),我会尝试将表单的Font 属性设置为等于System.Drawing.SystemFonts.DefaultFont。如果您的控件(例如:文本框)未指定特定字体,那么我相信它们会从其父容器(即表单)继承其字体属性。
System.Drawing.SystemFonts 类中还有其他更具体的系统字体(如 Caption 字体的默认设置)。您可能还想进一步调查。
【讨论】:
SystemFonts.DefaultFont 工作正常,但我不建议在表单初始化之前调用它。它会导致控制图纸失真。当我在表单加载下使用它时,它对我有用..
// Get dpi width
float x = this.CreateGraphics().DpiX;
// if screen is width
if (x == 120)
// Get big image from Resources
this.BackgroundImage = Properties.Resources.BigImage;
else if (x==96)
{
// Get small image from Resources
this.BackgroundImage = Properties.Resources.loading49;
this.BackColor = ColorTranslator.FromHtml("#E6E6E6");
this.button2.Size = new Size(85, 30);
this.button1.Size = new Size(75, 24);
this.textBox1.Size = new Size(150, 40);
}
【讨论】: