2017-04-17 145 views
2

我有MainForm類。在這裏,我可以做出這樣的事情。我怎樣才能從另一個課程中學習?

private void MainForm_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics graphics = this.CreateGraphics(); 
    Rectangle rectangle = new Rectangle(50, 100, 150, 150); 
    graphics.DrawEllipse(Pens.Black, rectangle); 
    graphics.DrawRectangle(Pens.Red, rectangle); 
} 

而且我可以在我的窗體中看到結果。

但我有另一個類圖片。我想從這裏畫畫。我該怎麼做?

+2

請澄清的問題。你的意思是你已經有一個'System.Drawing.Image'的實例,你想繪製它而不是矩形和橢圓? – Crowcoder

+0

圖像是我自己的類,我想要在MainForm中繪製一些方法來繪製圖形。 – hivokas

+0

您可以將圖形對象傳遞給您,並在類方法中處理繪圖過程。 – Franck

回答

3

發送PaintEventArgs的(下面的人來我一直在使用)

class Draw 
{ 
    public void Paint(PaintEventArgs e) 
    { 
      e.Graphics.DrawRectangles(Pens.Blue, GetRectangle());       
    } 
} 

其中GetRectangle將是另一種方法來定義矩形

,你也應該能夠只是給你的對象(你的情況MainForm中的實例)

class Draw 
{ 
    public void Paint(MainForm main) 
    { 
     Graphics graphics = main.CreateGraphics(); 
    } 
} 

或圖形對象

class Draw 
{ 
    public void Paint(Graphics graphics) 
    { 
     Rectangle rectangle = new Rectangle(50, 100, 150, 150); 
     graphics.DrawEllipse(Pens.Black, rectangle); 
     graphics.DrawRectangle(Pens.Red, rectangle); 
    } 
} 

你仍然需要PictureBox的事件處理程序,所以你會做這樣的事情

private void MainForm_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics graphics = this.CreateGraphics(); 
    Draw image = new Draw(); 
    image.Paint(graphics); 
} 
+0

如果我將使用最後一個變體,我應該在** private void PictureBox_Paint(object sender,PaintEventArgs e){...} **中寫入什麼內容? – hivokas

+0

以例子的固定答案 – ferday

+0

好的,它的工作原理。我應該改變什麼來在PictureBox中顯示我的繪畫? – hivokas