2011-05-05 26 views
3

对于Windows应用程序(C#),是否可以调整整个应用程序(包括所有表单)以使用系统字体设置来调整大小而不是使用固定大小?如何使用Windows C#应用程序的系统字体设置

这是用于视力障碍的用户,他们在机器上设置了更大的字体大小。根据用户的具体情况,应用程序是否可以调整字体?

回答

2

在表单的构造函数(调用InitializeComponent())之前,我将尝试设置你的表格等于System.Drawing.SystemFonts.DefaultFont Font属性。如果你的控件(例如:文本框)没有指定一个特定的字体,那么我相信他们从父容器(即表单)继承它们的字体属性。

System.Drawing.SystemFonts类中还有其他更具体的系统字体(如标题字体的默认设置)。您可能还想进一步调查这些。

+0

'SystemFonts.DefaultFont'工作正常,但我不会建议在表单初始化之前调用它。它会导致扭曲的控制图。当我在表单加载时使用它时它对我有效。 – nawfal 2011-06-24 13:51:35

2

你应该,如果你想你的应用程序被系统字体缩放,或者AutoScaleMode.Dpi如果你想让它被Windows DPI设置缩放的所有形式的AutoScaleMode属性的值设置为AutoScaleMode.Font

在这里你可以找到一些更多的信息 - http://msdn.microsoft.com/en-us/library/ms229605.aspx

+0

感谢您的回复。我检查了代码,发现所有窗体的AutoScaleMode属性都已设置为AutoScale.Font。为了进行测试,我将机器上的字体大小更改为“超大”,并发现只有我的应用程序的标题栏才能反映此更改。窗体上的其他内容(面板,按钮,文本等)仍然是相同的大小。任何想法如何使这项工作? – GoldenUser 2011-05-06 20:25:11

+0

您应该将此属性的值设置为AutoScaleMode.Dpi。在Windows 7显示设置中,甚至有一个选项显示“设置自定义文本大小(DPI)”。我在较老的窗口中输入它是一样的,但它们并没有说清楚DPI是否为相同值字体的较大尺寸负责。您可以通过这种方式来查看 - 如果将字体大小设置为12,则较高DPI(例如125%)上的相同大小较高(15)。通过将AutoScaleMode设置为Font,在较高DPI屏幕上的程序将被缩小,使其看起来像12.如果它是DPI,它将保持12(或更高DPI中的15)。 – 2011-05-07 10:17:21

+0

感谢您的帮助伊万。该应用程序现在可以很好地处理字体缩放。 但是,要使其成为无障碍投诉,我需要使其工作,如果用户设置高对比度设置。现在,如果我设置了高对比度设置(控制面板 - 辅助功能 - 显示),表格上的大部分文本消失,UI看起来很难看。有没有一种方法可以反映我们应用程序中的高对比度变化? 感谢您的帮助! – GoldenUser 2011-05-11 15:26:14

0
// 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); 
} 
相关问题