2013-03-08 78 views
3

在我的代碼中,我有一個帶背景圖片的PictureBox。我用它使用在不同類別的Windows窗體中繪製圖片框

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{ 
    Pen p = new Pen(Color.Turquoise, 2); 
    Rectangle r = new Rectangle(600, 300, 5, 5); 
    e.Graphics.DrawRectangle(p, r); 
    p.Dispose(); 
} 

現在在繪製一個矩形,我知道我需要做很多事情與這些矩形,並動態地創建他們,我已經創造了他們的一類,具有構造看像這樣:

public MyRectangles(int x, int y) 
{ 
    Pen p = new Pen(Color.Turquoise, 2); 
    Rectangle r = new Rectangle(x, y, 5, 5); 
    e.Graphics.DrawRectangle(p, r); 
    p.Dispose(); 
} 

的問題是,在e.Graphics.DrawRectangle(p, r);e這裏不存在。這是有道理的,但我明白爲什麼,但是我不知道要用什麼來代替它,以再次繪製相同的圖畫框。

回答

4

嘗試通過圖形對象:

public MyRectangles(Graphics g, int x, int y) 
{ 
    Pen p = new Pen(Color.Turquoise, 2); 
    Rectangle r = new Rectangle(x, y, 5, 5); 
    g.DrawRectangle(p, r); 
    p.Dispose(); 
} 
+0

我應該通過什麼確切的G? PictureBox本身? – 2013-03-08 16:55:54

+0

@MarekBuchtela從PictureBox繪畫事件中,傳遞'e.Graphics'。 – LarsTech 2013-03-08 16:57:22

+0

是的,它是我的錯,應該在上面的問題中說明了這一點 - 我不會從繪畫事件中調用它,但也許在按下按鈕之後,所以我不太確定如何獲得e.Graphics那裏。 – 2013-03-08 16:58:50