2013-12-09 5 views
0

У меня есть pictureBox1 с изображением внутри, и когда я нажимаю на него свои точки рисования. Теперь я добавил кнопку сброса, которую я назвал, когда я нажимаю на нее, она должна очистить все рисунки, которые я сделал на картинке, и оставить изображение внутри без рисунков на нем.Как сбросить/очистить все чертежи, которые я сделал на pictureBox1?

я сделал:

private void button4_Click(object sender, EventArgs e) 
     { 
      Graphics graphics; 
      graphics = pictureBox1.CreateGraphics(); 
      graphics.DrawImage(pictureBox1.Image, 0, 0); 
     } 

Так я рисовать много точек на pictureBox1 затем нажмите на кнопку, и все точки исчезли, а затем один раз я нажимаю на picturebox1 снова я вижу также новые точки, но и старые точки, которые я сделал до очистки.

Как я могу очистить старые чертежи, чтобы они не отображались на следующих кликах?

Это событие краски: Перемещенное событие краски к новому классу:

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); 
      } 
     } 
+1

Вы никогда не должны опираться на 'CreateGraphics()'. Вместо этого вам нужно нарисовать все в событии Paint. – SLaks

+0

'pictureBox1.Image = null;' – stuartd

+0

Вы сохраняете точки в списке. Вы не хотите их больше, поэтому просто используйте метод Clear() списка. И вызовите метод «Недействительный() для фотошопа, чтобы заставить его перекрасить себя. –

ответ

0

установка свойства изображения обнулить должно работать.

picBox.Image = null; 

Ii это не сработало, вы можете использовать свойство InitialImage для отображения вашего изображения.

pictBox.InitialImage = null; 

Пожалуйста, обратитесь по ссылке: Clear image on picturebox

0

Это работает:

private void button4_Click(object sender, EventArgs e) 
     { 
      Graphics graphics; 
      graphics = pictureBox1.CreateGraphics(); 
      graphics.DrawImage(pictureBox1.Image, 0, 0); 
      pb1points = new List<PointF>(); 
     } 
Смежные вопросы