发明名称 一种基于WPF和GDI+分层绘制地图的方法
摘要 本发明涉及一种基于WPF和GDI+分层绘制地图的方法,包括步骤有:(1)当地图启动刷新的时候,首先组件加锁,提醒调用组件不可用;(2)将绘制地图分为最上面的WPF绘制层、第二层的GDI+矢量图层绘制层、第三层的实时栅格服务层及最下面的瓦片地理背景服务层,分别绘制(3)在第二层GDI+矢量图层的绘制及第三层实时栅格服务层的绘制刷新完毕之后解锁,即将地图MapLocked的属性设置为False,分层绘制的地图刷新完毕。本发明采用WPF和GDI+混合的渲染技术和多线程技术实现地图展示,可以展现动画操作,利用WPF自带的特效效果提高用户体验,性能明显提高。
申请公布号 CN104156480A 申请公布日期 2014.11.19
申请号 CN201410423803.8 申请日期 2014.08.26
申请人 天津市普迅电力信息技术有限公司 发明人 胡晓楠;李欣荣;李宽荣;高勇
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 天津盛理知识产权代理有限公司 12209 代理人 韩奎勇
主权项 一种基于WPF和GDI+分层绘制地图的方法,其特征在于包括步骤如下:(1)当地图启动刷新的时候,首先组件加锁,提醒调用组件不可用,添加MapLocked的属性,开始刷新的时候设置MapLoaded为True;(2)将绘制地图分为最上面的WPF绘制层、第二层的GDI+矢量图层绘制层、第三层的实时栅格服务层及最下面的瓦片地理背景服务层,分别绘制;①最上面WPF绘制层的绘制,通过主线程绘制WPF绘制层上面的二维矢量图形,使用WPF自带的System.Windows.Shapes.Path对象对绘制痕迹反馈和地图元素进行绘制,其具体操作过程为:将地图中的绘制痕迹对象集合和地图中地图元素对象集合进行地理坐标到屏幕坐标的转换,再根据已经坐标转换后的对象集合生成实体的System.Windows.Shapes.Path对象集合放到图层Canvas容器中,最终完成该次绘制操作;②第二层GDI+矢量图层的绘制,该图层的绘制采用多线程,及GDI+绘制图片加载到该层中的方式,绘制过程分成两个步骤进行,第一步是对矢量数据的形状进行绘制,第二步是对于标注的绘制,最终绘制在一个图片上,放到Canvas图层上;③第三层实时栅格服务层的绘制,该图层的绘制采用多线程,及异步获取,且能支持多个栅格地图服务的方式,当地图完成视野变化的时候,异步从网络下载属于该视野的矢量栅格图片,放到Canvas图层上;④最下面瓦片地理背景服务层的绘制,该层在从网络获取地图的时候,采用线程池异步下载获取当前可见范围内所需的瓦片图片,在地图可见范围变化时,利用WPF帧动画实时异步刷新该图层获取瓦片,同时缓存一定数据量的瓦片图片;(3)在第二层GDI+矢量图层的绘制及第三层实时栅格服务层的绘制刷新完毕之后解锁,即将地图MapLocked的属性设置为False,分层绘制的地图刷新完毕;(4)获得目标视图范围,以该范围作为每个图层的参数,各层在自己的线程中独立渲染,互相不干扰,每个层渲染完毕,即时结束。
地址 300384 天津市西青区海泰绿色产业基地软件园J座6层