C# asp.net 用直线画路线图

公司做的时无线定位,客户要求在平面图上作出一个轨迹图来。工作日浅,之前没做过类似的东西,不知道从何下手,而且公司里边就我一个开发,搞需求,后期实施都是我一个,所以问也就无从问起。想到C#里有一个画直线和圆的方法,觉得也能应用吧。经客户同意,两个无线站点间表示移动轨迹用直线连接。

下边是画点和直线的代码(点表示人所在位置,颜色表示状态,如:蓝色为正常,红色为报警):

 private void Drawing(int x,int y,Color color) //x,y为当前移动到的坐标
        {
            if (startFlag == true) //startFlag 判断是否是第一次画
            {
                startFlag = false;
                btmLine = new Bitmap(@"D:\zthk\zthk\TwoFloor.jpg");//初始化直线位图图像
                //画一个圆点
                grp = Graphics.FromImage(bm);
                Pen pen = new Pen(new SolidBrush(color), 0.5f);//声明单色画笔
                Rectangle rg = new Rectangle(x, y, 8, 8);//初始化一个矩形
                grp.DrawEllipse(pen, rg);
                grp.FillEllipse(new SolidBrush(color), rg);
                //保存图片数据
                MemoryStream stream = new MemoryStream();
                bm.Save(stream, ImageFormat.Jpeg);
                //输出图片
                Response.Clear();
                Response.ContentType = "image/jpeg";
                Response.BinaryWrite(stream.ToArray());
            }
            else
            {
                grp = Graphics.FromImage(btmLine);
                try
                {
                    grp.DrawLine(penLine, new Point(startX, startY), new Point(x, y));
                    MemoryStream temp = new MemoryStream();
                    btmLine.Save(temp, ImageFormat.Jpeg);
                    MemoryStream Line = temp;
                    Bitmap btmPoint = new Bitmap(temp);//用之前的直线位图初始化点位图
                    btmLine = new Bitmap(Line);//重新初始化直线位图
                    grp = Graphics.FromImage(btmPoint);
                    Pen pen = new Pen(new SolidBrush(color), 0.5f);
                    Rectangle rg = new Rectangle(x, y, 8, 8);
                    grp.DrawEllipse(pen, rg);
                    grp.FillEllipse(new SolidBrush(color), rg);
                    //保存图片数据
                    MemoryStream consoleStream = new MemoryStream();
                    bm.Save(consoleStream, ImageFormat.Jpeg);

                    //输出图片
                    Response.Clear();
                    Response.ContentType = "image/jpeg";
                    Response.BinaryWrite(consoleStream.ToArray());
                }
                finally
                {
                    //释放资源
                    grp.Dispose();
                    bm.Dispose();
                    btmLine.Dispose();
                    btmPoint.Dispose();
                }
                startX = x;//记录X坐标
                startY = y;//记录Y坐标

            }
        }

 本人新手,请老鸟们多多指教。

posted @ 2012-03-19 11:53  未成仙用户  阅读(613)  评论(0编辑  收藏  举报