2011-04-14 44 views
2

我想获得一个winforms表单的高度和宽度属性,以便能够对所有的颜色进行着色?获取winform表单的参数(宽度和高度)

我试过这个代码..

private void Form1_Load(object sender, EventArgs e) 
{ 
    using (Graphics g = this.CreateGraphics()) 
    { 
     Rectangle r=this.DisplayRectangle; 
     g.DrawRectangle(Pens.Black, new Rectangle(0, 0, r.X, r.Y)); 
    } 
} 

但它不会做的工作。如何使用图形对象和Rectangle对象将整个窗体以黑色着色?

+0

我回滚您的编辑,因为它似乎没有任何意义。如果您要求某人澄清他们的答案,请*作为对他们答案的评论*。如果您确实需要对原始问题进行实质性更改,请将其作为“更新”发布,即保留原有问题文本,并在下面添加新的问题。这将有助于他人理解上下文中的问题。另外,也许你可以尝试一下你使用的格式有点难 - 它会让人们更容易回答你的问题=) – Rob 2011-04-14 08:59:11

+0

对不起,Robs,我修改了我提供的答案后,我考虑了这个问题为解决..所以我贴出解决方案,并用问题 – 2011-04-14 09:09:19

回答

3

如果你这样做,你只会在窗口恰好在屏幕上绘画。该窗口不知道这一点,当窗口由于任何原因更新时,它将被重绘而没有该颜色。使用Paint事件在窗口上绘制图形。为该事件添加一个事件处理程序,并且在窗口必须重绘时调用它。事件参数包含您应该用于绘图的Graphics对象。

使用DisplayRectangleWidthHeight性质的宽度和高度,而不是XY性质。但是,由于Graphics对象被剪裁到要更新的区域,因此只需使用Clear方法填充颜色即可。

+0

替换它真棒。似乎工作 – 2011-04-14 08:56:36

1

我在窗体上有两个按钮(在设计视图中)button1_Click是将它画成黑色,而button2_Click是将窗体绘制回控制颜色。

public partial class Form2 : Form 
{ 
    private Brush brushToPaint; 

    public Form2() 
    { 
     InitializeComponent(); 
     brushToPaint = SystemBrushes.Control; 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     e.Graphics.FillRectangle(brushToPaint, this.DisplayRectangle); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     brushToPaint = Brushes.Black; 
     InvokePaint(this, new PaintEventArgs(this.CreateGraphics(), this.DisplayRectangle)); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     brushToPaint = SystemBrushes.Control; 
     InvokePaint(this, new PaintEventArgs(this.CreateGraphics(), this.DisplayRectangle)); 
    } 
} 
+0

谢谢,我不知道该算法..这是什么做SystemBrushes.Control; – 2011-04-14 09:07:01

+0

在MSDN上检查[SystemBrushes](http://msdn.microsoft.com/en-us/library/system.drawing.systembrushes.aspx),简单地说它们是Windows自己使用的预定义的彩色笔刷。如控制颜色,高亮颜色,非活动窗口颜色等。 – 2011-04-14 09:23:53

1

做到这一点使用GraphicsDisplayRectangle

形式有一个名为BackColor属性,你可以简单地设置为黑色:

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.BackColor = Color.Black; 
}