C#绘图时,当画图形时,前一次画的图形就消失了,而且比如画直线后,再选择矩形,会自动画出矩形,这个矩形就是根据之前的直线的两个端点自动出现的,该怎么解决呢
private void pictureBox1_MouseDown(object sender, MouseEventArgs e){
g = this.pictureBox1.CreateGraphics();
StartPoint.X = e.X;
StartPoint.Y = e.Y;
EndPoint.X = e.X;
EndPoint.Y = e.Y;
IsDraw = true;
pictureBox1.Invalidate();
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (IsDraw)
{
EndPoint.X = e.X;
EndPoint.Y = e.Y;
}
pictureBox1.Invalidate();
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
switch (a)
{
case 1:
g.FillEllipse(brush1,EndPoint.X,EndPoint.Y,7,7);
break;
case 2:
g.DrawLine(pen1, StartPoint, EndPoint);
break;
case 3:
g.DrawRectangle(pen1, StartPoint.X, StartPoint.Y, Math.Abs(EndPoint.X - StartPoint.X), Math.Abs(EndPoint.Y - StartPoint.Y));
break;
}
pictureBox1.Invalidate();
IsDraw = false;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
switch (a)
{
case 1:
e.Graphics.FillEllipse(brush1, EndPoint.X, EndPoint.Y, 7, 7);
break;
case 2:
e.Graphics.DrawLine(pen1, StartPoint, EndPoint);
break;
case 3:
e.Graphics.DrawRectangle(pen1, StartPoint.X, StartPoint.Y,Math.Abs( EndPoint.X - StartPoint.X),Math.Abs( EndPoint.Y - StartPoint.Y));
break;
}
} --------------------编程问答-------------------- 先学会把问题描述清楚,看看你的问题,不考虑技术,单从语文上讲,通顺吗? --------------------编程问答-------------------- Invalidate,当然会清空以前的了,你应该把你要画的东西都放到一个列表中,你循环列表画出所有的图形
第二个问题,肯定是没控制好两个端点坐标StartPoint, EndPoint --------------------编程问答-------------------- 好吧 比较着急了 表述不清楚 有两个问题
一、第二次画图时会使第一次画的图消失
二、如果先选择画线,绘制直线后,再选择绘制矩形,还没动鼠标绘图,窗体就自动出现一个矩形,看起来这个矩形是根据之前那条直线的两个端点绘制出的,不希望出现这点
只能这样描述了…… --------------------编程问答-------------------- 好吧 比较着急了 表述不清楚 有两个问题
一、第二次画图时会使第一次画的图消失
二、如果先选择画线,绘制直线后,再选择绘制矩形,还没动鼠标绘图,窗体就自动出现一个矩形,看起来这个矩形是根据之前那条直线的两个端点绘制出的,不希望出现这点
只能这样描述了……
补充:.NET技术 , C#