2016-04-28 10 views
0

同じパネルに楕円を描画しようとしていますが、コーディネーターはマウスのクリックで決定されます。ここで私のコードは、このコードは1つの円を描くことができます。新しいサークルは、常にパネル上の古いサークルを更新しています。したがって、常に1つの円しかありません。同じパネルに複数の楕円を描画する方法

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

答えて

0

これは、多くの円を描くようになる:

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

は、他のサイズの店List<Rectangle>について

points.Remove(points.Last()); 

ことで、最後の1を削除します

points.Clear(); 

によってそれらをすべて削除します代わりに。より複雑な描画の場合は、DrawActionペン、色または回転や他の形状などを保持する独自のクラスを作成します。

関連する問題