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坐标
}
}
本人新手,请老鸟们多多指教。