对于Windows应用程序(C#),是否可以调整整个应用程序(包括所有表单)以使用系统字体设置来调整大小而不是使用固定大小?如何使用Windows C#应用程序的系统字体设置
这是用于视力障碍的用户,他们在机器上设置了更大的字体大小。根据用户的具体情况,应用程序是否可以调整字体?
对于Windows应用程序(C#),是否可以调整整个应用程序(包括所有表单)以使用系统字体设置来调整大小而不是使用固定大小?如何使用Windows C#应用程序的系统字体设置
这是用于视力障碍的用户,他们在机器上设置了更大的字体大小。根据用户的具体情况,应用程序是否可以调整字体?
在表单的构造函数(调用InitializeComponent()
)之前,我将尝试设置你的表格等于System.Drawing.SystemFonts.DefaultFont
Font属性。如果你的控件(例如:文本框)没有指定一个特定的字体,那么我相信他们从父容器(即表单)继承它们的字体属性。
System.Drawing.SystemFonts类中还有其他更具体的系统字体(如标题字体的默认设置)。您可能还想进一步调查这些。
你应该,如果你想你的应用程序被系统字体缩放,或者AutoScaleMode.Dpi
如果你想让它被Windows DPI设置缩放的所有形式的AutoScaleMode
属性的值设置为AutoScaleMode.Font
。
在这里你可以找到一些更多的信息 - http://msdn.microsoft.com/en-us/library/ms229605.aspx
感谢您的回复。我检查了代码,发现所有窗体的AutoScaleMode属性都已设置为AutoScale.Font。为了进行测试,我将机器上的字体大小更改为“超大”,并发现只有我的应用程序的标题栏才能反映此更改。窗体上的其他内容(面板,按钮,文本等)仍然是相同的大小。任何想法如何使这项工作? – GoldenUser 2011-05-06 20:25:11
您应该将此属性的值设置为AutoScaleMode.Dpi。在Windows 7显示设置中,甚至有一个选项显示“设置自定义文本大小(DPI)”。我在较老的窗口中输入它是一样的,但它们并没有说清楚DPI是否为相同值字体的较大尺寸负责。您可以通过这种方式来查看 - 如果将字体大小设置为12,则较高DPI(例如125%)上的相同大小较高(15)。通过将AutoScaleMode设置为Font,在较高DPI屏幕上的程序将被缩小,使其看起来像12.如果它是DPI,它将保持12(或更高DPI中的15)。 – 2011-05-07 10:17:21
感谢您的帮助伊万。该应用程序现在可以很好地处理字体缩放。 但是,要使其成为无障碍投诉,我需要使其工作,如果用户设置高对比度设置。现在,如果我设置了高对比度设置(控制面板 - 辅助功能 - 显示),表格上的大部分文本消失,UI看起来很难看。有没有一种方法可以反映我们应用程序中的高对比度变化? 感谢您的帮助! – GoldenUser 2011-05-11 15:26:14
// 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);
}
'SystemFonts.DefaultFont'工作正常,但我不会建议在表单初始化之前调用它。它会导致扭曲的控制图。当我在表单加载时使用它时它对我有效。 – nawfal 2011-06-24 13:51:35