获取winform形式的参数(宽度和高度)

时间:2011-04-14 08:32:08

标签: c# winforms graphics

我想获取winforms表单的高度和宽度属性,以便能够为它们着色吗?

我试过这段代码..

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对象将整个表单着色为黑色?

3 个答案:

答案 0 :(得分:3)

如果您喜欢这样,那么您将只是在窗口所在的屏幕上绘画。窗口不知道这一点,当窗口因任何原因更新时,它将被重绘而没有颜色。

使用Paint事件在窗口上绘制图形。为事件添加事件处理程序,只要重新绘制窗口,就会调用它。事件参数包含您应该用于绘制的Graphics对象。

使用Width的{​​{1}}和Height属性作为宽度和高度,而不是DisplayRectangleX属性。但是,当Y对象被裁剪到要更新的区域时,您可以使用Graphics方法用颜色填充它。

答案 1 :(得分: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));
    }
}

答案 2 :(得分:1)

使用GraphicsDisplayRectangle执行此操作吗?

表单有一个名为BackColor的属性,您可以将其设置为黑色:

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