/// <summary> /// 绘制初始画板 /// </summary> public void DrawSimuMap(List <NodeBean> lnb, List <LinkBean> lnr) { if (pl == null) { pl = (DrawConverter(lnb)); } // 将pl转化为实际值 List <PointDrawer> lpd = convertToTrueListPoints(pl); PointDrawer.Draw(PointType.NORMAL, lpd.ToArray(), this.graph); // List <TextDrawer> tl = new List <TextDrawer>(); foreach (PointDrawer p in lpd) { tl.Add(new TextDrawer(p.name, (int)(p.Longtitude + 10), (int)(p.Latitude - 5))); } TextDrawer.Draw(TextType.NORMAL, tl.ToArray(), this.graph); // 将lrd转化为实际值 if (lrd == null) { lrd = DrawConverter(lnr); } List <RouteDrawer> lld = convertToTrueListRoutes(lrd, lpd); RouteDrawer.Draw(RouteType.NORMAL, lld.ToArray(), this.graph); }
private List <RouteDrawer> convertToTrueListRoutes(List <RouteDrawer> lr_temp, List <PointDrawer> lp_temp, PointDrawer center) { List <RouteDrawer> lld = new List <RouteDrawer>(); foreach (RouteDrawer ld in lr_temp) { PointDrawer sp = lp_temp.Find(delegate(PointDrawer pd) { return(pd.id.Equals(ld.spoint.id)); }); PointDrawer ep = lp_temp.Find(delegate(PointDrawer pd) { return(pd.id.Equals(ld.epoint.id)); }); if (sp != null && ep != null) { RouteDrawer rd = new RouteDrawer(sp, ep, ld.id); lld.Add(rd); } else if (sp == null || ep == null) { RouteDrawer rd = (sp == null) ? new RouteDrawer(center, ep, ld.id) : new RouteDrawer(sp, center, ld.id); lld.Add(rd); } } return(lld); }
/// <summary> /// 通用绘图方式 /// </summary> /// <param name="item">绘制项目</param> /// <param name="name">绘图名称</param> /// <param name="type">绘制类型</param> private void Draw(DrawItem item, object type, object obj) { switch (item) { case DrawItem.POINT: PointDrawer.Draw(type, obj, graph); // 空缺处可以是PointDrawer 也可以是PointDrawer[] break; case DrawItem.ROUTE: RouteDrawer.Draw(type, obj, graph); // 空缺处可以是RouteDrawer 也可以是RouteDrawer[] break; case DrawItem.TEXT: break; } }
private static void DrawRoute(RouteType type, RouteDrawer r, Graphics g) { if (r != null) { Pen MyPen; switch (type) { case RouteType.EDAGE: MyPen = new Pen(Color.Red, 2); Paint(r, g, MyPen); break; case RouteType.GROUP: MyPen = new Pen(Color.LightBlue, 3); Paint(r, g, MyPen); break; case RouteType.NORMAL: MyPen = new Pen(Color.White, 1); Paint(r, g, MyPen); break; } } }
private static void Paint(RouteDrawer r, Graphics g, Pen MyPen) { g.DrawLine(MyPen, new Point((int)r.spoint.Longtitude, (int)r.spoint.Latitude), new Point((int)r.epoint.Longtitude, (int)r.epoint.Latitude)); }
public long id; // 所属道路Id public RouteDrawer(RouteDrawer r) { this.spoint = new PointDrawer(r.spoint); this.epoint = new PointDrawer(r.epoint); this.id = r.id; }
private List<RouteDrawer> convertToTrueListRoutes(List<RouteDrawer> lr_temp, List<PointDrawer> lp_temp, PointDrawer center) { List<RouteDrawer> lld = new List<RouteDrawer>(); foreach (RouteDrawer ld in lr_temp) { PointDrawer sp = lp_temp.Find(delegate(PointDrawer pd) { return pd.id.Equals(ld.spoint.id); }); PointDrawer ep = lp_temp.Find(delegate(PointDrawer pd) { return pd.id.Equals(ld.epoint.id); }); if (sp != null && ep != null) { RouteDrawer rd = new RouteDrawer(sp, ep, ld.id); lld.Add(rd); } else if(sp == null || ep == null) { RouteDrawer rd = (sp == null) ? new RouteDrawer(center, ep, ld.id) : new RouteDrawer(sp ,center, ld.id); lld.Add(rd); } } return lld; }
private static void DrawRoutes(RouteType type, RouteDrawer[] r, Graphics g) { for (int i = 0; i < r.GetLength(0); i++) { DrawRoute(type, r[i], g); } }
public RouteDrawer(RouteDrawer r) { this.spoint = new PointDrawer(r.spoint); this.epoint = new PointDrawer(r.epoint); this.id = r.id; }