当我点击一个形状清晰的按钮时,我想清除表格上之前绘制的形状。所以我使用表格中的代码:
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但不起作用。我该怎么办。
答案 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() );
}