2017-04-17 142 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