在绘画之前更改表单控件的图形属性

时间:2015-12-01 00:20:50

标签: c# .net winforms graphics

我有一个带有几个控件的窗体,例如标签和按钮。绘制表单时,在Paint事件处理程序中,我可以使用PaintEventArgs e来:

private void Form_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;

    SolidBrush brush = new SolidBrush(Color.Black);
    e.Graphics.DrawString("Test String", font, brush, 100, 100);
}

这样我就可以使用Graphics.DrawString()创建符合我设置的属性的字符串,例如TextRenderingHint

如何更改表单,标签和按钮等所有控件的Graphics属性,以便在绘制/渲染它们时,它们符合我想要的Graphics属性他们到?

具体来说 - 我想更改表单上控件的TextRenderingHint。如果为Form本身做这件事包括所有控制都是可能的,我会同样高兴。

1 个答案:

答案 0 :(得分:1)

  

如何更改窗体上的所有控件的图形属性,标签和按钮等,以便在绘制/渲染它们时,它们符合我想要的图形属性?

你不能。

正如Hans在评论中所说,Winforms的内置控件大多只是现有本机Windows控件类的瘦包装。它们将使用当前用户设置进行渲染,这些设置对于所有应用程序都是全局的。

即使它们不是,但是另一个问题是Graphics实例对于每个Paint事件和每个基于窗口的控件(即大多数)都是新的他们获得了一个Graphics实例,对应该控件的窗口HDC事件的本地WM_PAINT。没有"全球"您可以更改的Graphics个实例,然后会针对每个Paint事件重复使用该实例。