在按钮单击上清除表单中的绘制形状

时间:2016-03-21 09:24:18

标签: c#

当我点击一个形状清晰的按钮时,我想清除表格上之前绘制的形状。所以我使用表格中的代码:

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    System.Drawing.Graphics g = this.CreateGraphics();
    System.Drawing.Pen myPe = new Pen(Color.Blue, 1);
    Point[] array = { new Point(220, 70), new Point(200, 120), new Point(230, 120) };
    g.DrawPolygon(myPe ,array);
}

我在button1_Click中使用了以下代码:

private void button1_Click(object sender, EventArgs e) 
{ 
    System.Drawing.Graphics g = this.CreateGraphics();
    g.Clear(this.BackColor);  
}

这段代码和this.refresh但不起作用。我该怎么办。

1 个答案:

答案 0 :(得分:0)

您需要保存用于绘制类级别变量的数据。

在清除按钮中,您可以清除它。

现在它始终在Paint事件中创建,因此它总是重新出现..

使用List<Point>可以让生活更轻松..

Paint事件中,您可以而且应该使用当前的e.Graphics对象。

List<Point> points = new List<Point>() 

private void buttonSetDrawing_Click(object sender, EventArgs e)
{
    points = new List<Point>() { new Point(220, 70), 
                                new Point(200, 120), new Point(230, 120) };
    Invalidate();
}

private void buttonClear_Click(object sender, EventArgs e)
{
    points.Clear();
    Invalidate();
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    System.Drawing.Pen myPen = new Pen(Color.Blue, 1);
    if (points.Count > 1) g.DrawPolygon(myPen, points.ToArray() );
}