使用不同类中的方法绘制图形

问题描述:

我正在制作一个超级简单的应用程序来绘制用例。使用不同类中的方法绘制图形

我想在Form1中的图片框中绘制一个火柴人。但是,我希望所有绘图代码都位于我的类中名为“Actor”的方法中,然后在单击带有单击事件的窗体时调用此代码。

这里是我的主角类

class Actor 
{ 
    // Fields 
    private string actorName { get; set; } 
    private int actorX { get; set; } 
    private int actorY { get; set; } 

    // Constructors 
    public Actor(string name, int x, int y) 
    { 
     actorName = name; 
     actorX = x; 
     actorY = y; 
    } 

    // Methods 
    public void DrawActor() 
    { 
     // ?? 
    } 
} 

我怎么会通过在表单中​​的图形对象通过在我的类中的方法?

+0

见标记为复制两个如何处理一个WinForms程序中的绘图,仅在'Paint'事件处理程序绘制,以及如何将事件的'Graphics'实例传递给一个单独的类的_correct_例子处理绘图。 –

你的表格类看起来像这样我猜:

private void button1_Click(object o, EventArgs e) { 
    control1.Invalidate(); 
} 

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

您对图形绘图对象。所以只需将图形对象传递给Draw方法并更改绘画事件。

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

private void control1_Paint(object o, PaintEventArgs e) { 
    Graphics graphics = e.Graphics; 
    myActor.DrawActor(graphics); 
} 
+0

当我调用DrawActor方法时,我的输入是什么? –

+0

啊傻我这是“Actor.DrawActor(pictureBoxName.CreateGraphics())” –

+3

任何使用'CreateGraphics()'的代码都被破坏了。唯一的_correct_绘制方法是处理'Paint'事件,并且可以传递传递给事件处理程序的'Graphics'实例。 –