2016-04-28 2 views
0

Ich versuche, einige Ellipsen im selben Panel zu zeichnen, und die Koordinatoren werden per Mausklick bestimmt. Hier ist mein Code, dieser Code kann nur einen Kreis zeichnen. Der neuere Kreis aktualisiert immer den älteren Kreis auf dem Panel. Es gibt also immer nur einen Kreis.Wie man mehrere Ellipsen im selben Panel zeichnet

private void panel1_MouseDown(object sender, MouseEventArgs e) 
     { 

      x = e.X; 
      y = e.Y; 
      panel1.Invalidate(); 
     } 
     Graphics g; 
     private void panel1_Paint(object sender, PaintEventArgs e) 
     { 
      g = panel1.CreateGraphics(); 

      g.FillEllipse(Brushes.Red, x,y, 10, 10); 
     } 

Antwort

0

Damit können Sie viele Kreise ziehen:

List<Point> points = new List<Point>(); // List<T> is wonderful ! 

private void panel1_MouseDown(object sender, MouseEventArgs e) 
{ 
    points.Add(e.Location); 
    panel1.Invalidate(); 
} 

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    g = e.Graphics; // only ever use this one for persistent graphics!! 
    foreach(Point pt in points) 
     g.FillEllipse(Brushes.Red, pt.X, pt.Y, 10, 10); 
} 

löschen alle von

points.Clear(); 

das letzte Löschen von

points.Remove(points.Last()); 

Für andere Größen store List<Rectangle> stattdessen. Für komplexere Zeichnung erstellen Sie eine DrawAction eigene Klasse, um Stifte, Farben oder sogar Rotationen und andere Formen usw. zu halten.