我试图在同一个面板中绘制一些椭圆,并通过鼠标点击确定协调器。这是我的代码,这段代码只能绘制一个圆圈。较新的圈子始终更新面板上的旧圆圈。所以总有一个圈子。
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 :(得分: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);
}
通过
删除所有内容points.Clear();
删除最后一个
points.Remove(points.Last());
对于其他尺寸的商店List<Rectangle>
。对于更复杂的绘图,创建一个自己的DrawAction
类来保持笔,颜色甚至旋转和其他形状等。