当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,