2011-04-14 30 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; 
}