/// <summary> /// 执行画图的函数 /// </summary> /// <param name="map">地图模型</param> public override void draw(MapModel map) { // 获取画笔 Graphics g = Graphics.FromImage(img); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; g.FillRectangle(backColor, 0, 0, img.Width, img.Height); // 画背景的每个部分 foreach (Segment seg in map.Segments) { // 将左右侧的点拼接起来 List <Point> ps = new List <Point>(); foreach (var lp in seg.LeftP) { ps.Add(format.getDrawPoint(lp.x, lp.y)); } for (int i = seg.RightP.Count - 1; i >= 0; --i) { ps.Add(format.getDrawPoint(seg.RightP[i].x, seg.RightP[i].y)); } // 点的数量不为0时才画图 if (ps.Count != 0) { g.FillPolygon(freeColor, ps.ToArray()); } } }
/// <summary> /// 绘制路径地图 /// </summary> /// <param name="map"></param> public override void draw(MapModel map) { List <Point> listP = new List <Point>(); List <int> typeP = new List <int>(); for (int i = 0; i < map.Points.Count; ++i) { KeyPoint p = map.Points[i]; listP.Add(format.getDrawPoint(p.x, p.y)); typeP.Add(p.type); } drawKeyPoints(listP, typeP); drawLines(listP, typeP); }