C#画圆怎么取消
C#:画圆如何取消!
我用这段画了一个圆~
Dim g As Graphics = Me.PictureBox1.CreateGraphics()
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
g.DrawEllipse(New Pen(Color.Red),10,10, 10, 10)
我要取消这个圆~如何操作~求大神!
------解决方案--------------------
既然你想清除之前画的东西,那就不要直接把图形画到picturebox上;
可以先定义几个位图,然后把图形画到上面,最后再把这几个位图画到picturebox上;
如果把位图记录到一个集合中,那么就可以操作这个集合,然后重绘就可以清除某一个图形了;
我用这段画了一个圆~
Dim g As Graphics = Me.PictureBox1.CreateGraphics()
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
g.DrawEllipse(New Pen(Color.Red),10,10, 10, 10)
我要取消这个圆~如何操作~求大神!
------解决方案--------------------
既然你想清除之前画的东西,那就不要直接把图形画到picturebox上;
可以先定义几个位图,然后把图形画到上面,最后再把这几个位图画到picturebox上;
如果把位图记录到一个集合中,那么就可以操作这个集合,然后重绘就可以清除某一个图形了;
IList<Bitmap> list = new List<Bitmap>();
public GDIDraw()
{
InitializeComponent();
DrawPicture();
}
public void DrawPicture()
{
Pen p = new Pen(Color.Red, 10);
Bitmap bt1 = new Bitmap(100, 100);
Graphics g1 = Graphics.FromImage(bt1);
g1.DrawEllipse(p, 10, 10, 50, 50);
Bitmap bt2 = new Bitmap(100, 100);
Graphics g2 = Graphics.FromImage(bt2);
g2.DrawEllipse(p, 10, 10, 50, 50);
list.Add(bt1);
list.Add(bt2);
g1.Dispose();
g2.Dispose();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
//使用GDI+绘图
Graphics g = e.Graphics; //创建画板,这里的画板是由pictureBox提供的.
int x = 0;
foreach (Bitmap bt in list)
{
switch (x)
{
case 0:
g.DrawImage(bt, 10, 10);
break;
case 1:
g.DrawImage(bt, 100, 100);
break;
}
x++;
}
}
private void button1_Click(object sender, EventArgs e)
{
list.RemoveAt(0);
pictureBox1.Invalidate(false);
}