我有一个带有图像的pictureBox1,当我点击它的绘图点时。 现在我添加了一个重置按钮,当我点击它时它会调用它,它应该清除我在pictureBox上做的所有绘图,并将图像保留在里面而没有图纸。
我做了:
private void button4_Click(object sender, EventArgs e)
{
Graphics graphics;
graphics = pictureBox1.CreateGraphics();
graphics.DrawImage(pictureBox1.Image, 0, 0);
}
所以我在pictureBox1上画了很多点,然后点击按钮,所有点都消失了,但是一旦我再次点击picturebox1,我也会看到新的点数,但也会看到我在清算前做的旧点。
如何清除旧图纸,以便下次点击时不会出现?
这是paint事件:将paint事件移动到一个新类:
public static void Paint(List<PointF> pb1points, GraphicsPath pb1gp, Point movingPoint, PictureBox pictureBox1, Graphics e)
{
e.Clear(Color.White);
e.DrawImage(pictureBox1.Image, movingPoint);
Pen p;
p = new Pen(Brushes.Green);
foreach (PointF pt in pb1points)
{
e.FillEllipse(Brushes.Red, pt.X, pt.Y, 3f, 3f);
}
using (Pen pp = new Pen(Color.Green, 2f))
{
pp.StartCap = pp.EndCap = LineCap.Round;
pp.LineJoin = LineJoin.Round;
e.DrawPath(pp, pb1gp);
}
}
答案 0 :(得分:0)
您可以尝试使用Graphics.Clear()。
参考:http://msdn.microsoft.com/en-us/library/system.drawing.graphics.clear(v=vs.110).aspx
答案 1 :(得分:0)
将Image属性设置为null应该有效。
picBox.Image = null;
即使它不起作用,您可能会使用InitialImage属性来显示图像。
pictBox.InitialImage = null;
请参考链接: Clear image on picturebox
答案 2 :(得分:0)
这是有效的:
private void button4_Click(object sender, EventArgs e)
{
Graphics graphics;
graphics = pictureBox1.CreateGraphics();
graphics.DrawImage(pictureBox1.Image, 0, 0);
pb1points = new List<PointF>();
}