一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法

xiaoxiao2020-10-23  20

一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法
【技术领域】
[0001] 本发明属于电子矢量地图处理技术领域,特别是涉及一种基于鼠标位置实现GDI 电子矢量地图缩放及平移的方法。
【背景技术】
[0002] ⑶I(GraphicsDeviceInterface)含义为图形设备接口,主要任务是负责 Windows操作系统与绘图程序之间的信息交互,处理所有Windows应用程序的图形输出。与 OpenGL、⑶1+、DriectX等绘图引擎相比,⑶I具有绘图效率高、使用简单的优点,因而广 泛的应用于二维矢量地图的绘制中。然而GDI只能提供基本的二维图形绘制功能,但无法 提供二维图形变换功能,因而难以实现电子矢量地图的缩放与平移等高级功能,而OpenGL、 GDI+、DriectX等均具有相关的实现函数。另外,现有的GDI电子矢量地图软件在进行缩 放操作时,均是以屏幕中心点为参考点对屏幕内绘图对象的像素点按缩放比例换算,但缺 点是缩放时矢量地图会发生漂移。

【发明内容】

[0003] 为了解决上述问题,本发明的目的在于提供一种基于鼠标位置实现GDI电子矢量 地图缩放及平移的方法。
[0004] 为了达到上述目的,本发明提供的基于鼠标位置实现⑶I电子矢量地图缩放及平 移的方法包括按顺序进行的下列步骤:
[0005] 步骤一、建立地图坐标系及屏幕坐标系;
[0006] 步骤二、建立参考矩形,并设置参考矩形的实际长度和实际高度、屏幕长度和屏幕 高度及顶点屏幕坐标,由此在地图坐标系与屏幕坐标系之间建立映射关系;
[0007] 步骤三、获取鼠标滚轮消息,计算缩放因子;根据鼠标移动的距离,计算鼠标平移 因子;
[0008] 步骤四、根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的 参考矩形的屏幕位置,实现对参考矩形的缩放及平移;
[0009] 步骤五、根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及 平移操作。
[0010] 在步骤一中,所述的地图坐标系是以正东方向为X轴,以正北方向为Y轴;屏幕坐 标系是以屏幕左上角为原点,x轴沿屏幕向左,y轴垂直于x轴且沿屏幕向下。
[0011] 在步骤二中,所述的建立参考矩形,并设置参考矩形的实际长度和实际高度以及 屏幕长度和屏幕高度的方法是:使参考矩形的中心点与屏幕的中心点重合,参考矩形的实 际长宽比例与参考矩形的屏幕长宽比例一致。
[0012] 在步骤三中,所述的获取鼠标滚轮消息,计算缩放因子a;根据鼠标移动的距离, 计算鼠标平移因子的方法是:通过Windows操作系统提供的API接口函数捕获鼠标的滚轮 消息和鼠标移动消息,计算得到缩放因子及鼠标平移因子。
[0013] 在步骤四中,所述的根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放 平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移的方法是:通过将鼠标当 前屏幕位置与参考矩形的四个顶点连接,将参考矩形分割为四个三角形,依据相似三角形 定理,结合缩放因子及鼠标平移因子,计算出经过缩放及平移操作后参考矩形四个顶点的 屏幕位置。
[0014] 在步骤五中,所述的根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地 图的缩放及平移操作的方法是:根据参考矩形的屏幕位置,通过步骤二确定的地图坐标系 和屏幕坐标系间的映射关系,将矢量地图的实际坐标重新转换为屏幕坐标并进行显示,以 实现对矢量地图的缩放及平移操作。
[0015] 本发明提供的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法与现有技 术方案相比具有以下技术效果:本发明在GDI绘图环境下,通过设置参考矩形,简便地实现 了电子矢量地图的平移操作,以及基于鼠标位置的地图缩放操作,缩放时以鼠标位置为原 点,解决了缩放过程矢量地图发生漂移的问题。本方法不仅适用于矢量电子地图的缩放,还 可以适用于图片缩放及其它缩放交互操作。
【附图说明】
[0016] 图1为本发明提供的GDI基于鼠标位置实现GDI电子矢量地图缩放及平移的方法 流程图。
[0017] 图2为本发明中使用的两种坐标系示意图。
[0018] 图3为鼠标位于参考矩形内进行放大操作时参考矩形变化示意图。
[0019] 图4为鼠标位于参考矩形外进行放大操作时参考矩形变化示意图。
[0020] 图5为鼠标位于参考矩形内进行缩小操作时参考矩形变化示意图。
[0021] 图6为鼠标位于参考矩形外进行缩小操作时参考矩形变化示意图。
[0022] 图7为进行平移操作时参考矩形变化示意图。
【具体实施方式】
[0023] 下面结合附图和具体实施例对本发明提供的基于鼠标位置的矢量地图缩放及平 移的方法进行详细说明。
[0024] 图1为本发明提供的GDI基于鼠标位置实现GDI电子矢量地图缩放及平移的方法 流程图。其中的全部操作都是在以计算机为核心的计算机系统中完成的,操作的主体均为 计算机系统。
[0025] 如图1所示,本发明提供的基于鼠标位置实现GDI电子矢量地图缩放及平移的方 法包括按顺序进行的下列步骤:
[0026] 步骤一、建立地图坐标系(X,Y)及屏幕坐标系(x,y);
[0027] 地图坐标系以正东方向为X轴,以正北方向为Y轴。将采用地理坐标系的原始地 图数据经过高斯-克吕格投影后投影到地图坐标系下。屏幕坐标系以屏幕左上角为原点, x轴沿屏幕向左,y轴垂直于x轴且沿屏幕向下。上述两种坐标系如图2所示。
[0028] 步骤二、建立参考矩形,并设置参考矩形的实际长度和实际高度、屏幕长度和屏幕 高度及顶点屏幕坐标,由此在地图坐标系与屏幕坐标系之间建立映射关系;
[0029] 建立参考矩形并设置参考矩形的实际长度Ls及实际高度Hs。设置参考矩形的屏 幕长度1^及屏幕高度111)。1^、扎与1^、%满足如下关系:
[0031] 使参考矩形的中心点与屏幕的中心点重合。计算参考矩形的四个顶点A,B,C,D的 屏幕坐标(xA,yA)、(xB,yB)、(X。,y。)、(xD,yD),计算公式如下:
[0033] 公式⑵中M为电脑屏幕的横向分辨率,N为电脑屏幕的纵向分辨率。 通过参考 矩形可以在地图坐标系与屏幕坐标系之间建立映射关系。地图上实际坐标为(X,Y)的点与 其在屏幕坐标(x,y)的映射关系为:
[0035] 步骤三、获取鼠标滚轮消息,计算缩放因子a;根据鼠标移动的距离,计算鼠标平 移因子;
[0036] 响应Windows操作系统的鼠标滚轮消息ON_WM_MOUSEWHEEL,通过Windows操作系 统提供的API接口函数OnMouseWheel获得鼠标滚轮转动参数,当转动参数大于0时,表明 鼠标在进行放大操作,缩放因子a=a*1.2;当转动参数小于0时,表明鼠标在进行缩小 操作,缩放因子a=a/1.2。
[0037] 响应Windows操作系统的鼠标移动消息0N_WM_M0USEM0VE,通过Windows操作系统 提供的API接口函数OnMouseMove获得鼠标的实时位置,通过计算两次鼠标位置之前的位 置差,即可计算出鼠标平移的屏幕距离(Ax,Ay),即平移因子。
[0038] 步骤四、根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的 参考矩形的屏幕位置,实现对参考矩形的缩放及平移;
[0039] 获取鼠标当前的屏幕位置(Xm,ym),根据鼠标当前是否位于参考矩形内部以及进行 放大或缩小操作,共可分为四种情况:1、鼠标位于参考矩形内进行放大操作,如图3所示; 2、鼠标位于参考矩形外进行放大操作,如图4所示;3、鼠标位于参考矩形内进行缩小操作, 如图5所示;4、鼠标位于参考矩形外进行缩小操作,如图6所示;通过分析这四种情况,将 鼠标当前屏幕位置与参考矩形的四个顶点连线,将参考矩形分割为四个三角形,依据相似 三角形原理,根据缩放因子a,计算出缩放后参考矩形四个顶点A',B',C',D'的屏幕 置(Xa,,Ya,)、(Xb,,Yb,)、(x。,,y。,)、(Xp,,),计算方法如下:
[0041] 当进行平移操作时,如图7所示,通过如下方法可计算出平移后的参考矩形四个 顶点f,B;w的屏幕位置(xA,,yA, )、(xB,,yB, )、(xc,,yc, )、(xD,Jjy):
[0043] 在进行缩放及平移操作时,均只改变参考矩形的四个顶点的屏幕坐标,不改变参 考矩形的实际大小及四个顶点的实际坐标。
[0044] 步骤五、根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及 平移操作;
[0045] 根据参考矩形的屏幕位置,依据步骤二建立的地图坐标系与屏幕坐标系间的映射 关系,重新更新地图矢量的屏幕坐标,并进行显示,由此实现对矢量地图的缩放及平移操 作。
【主权项】
1. 一种基于鼠标位置实现GDI电子矢量地图缩放及平移的方法,其特征在于:其包括 按顺序进行的下列步骤: 步骤一、建立地图坐标系及屏幕坐标系; 步骤二、建立参考矩形,并设置参考矩形的实际长度和实际高度、屏幕长度和屏幕高度 及顶点屏幕坐标,由此在地图坐标系与屏幕坐标系之间建立映射关系; 步骤三、获取鼠标滚轮消息,计算缩放因子;根据鼠标移动的距离,计算鼠标平移因 子; 步骤四、根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考 矩形的屏幕位置,实现对参考矩形的缩放及平移; 步骤五、根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及平移 操作。2. 根据权利要求1所述的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法,其 特征在于:在步骤一中,所述的地图坐标系是以正东方向为X轴,以正北方向为Y轴;屏幕 坐标系是以屏幕左上角为原点,X轴沿屏幕向左,y轴垂直于X轴且沿屏幕向下。3. 根据权利要求1所述的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法,其 特征在于:在步骤二中,所述的建立参考矩形,并设置参考矩形的实际长度和实际高度以及 屏幕长度和屏幕高度的方法是:使参考矩形的中心点与屏幕的中心点重合,参考矩形的实 际长宽比例与参考矩形的屏幕长宽比例一致。4. 根据权利要求1所述的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法, 其特征在于:在步骤三中,所述的获取鼠标滚轮消息,计算缩放因子a;根据鼠标移动的距 离,计算鼠标平移因子的方法是:通过Windows操作系统提供的API接口函数捕获鼠标的滚 轮消息和鼠标移动消息,计算得到缩放因子及鼠标平移因子。5. 根据权利要求1所述的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法,其 特征在于:在步骤四中,所述的根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩 放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移的方法是:通过将鼠标 当前屏幕位置与参考矩形的四个顶点连接,将参考矩形分割为四个三角形,依据相似三角 形定理,结合缩放因子及鼠标平移因子,计算出经过缩放及平移操作后参考矩形四个顶点 的屏幕位置。6. 根据权利要求1所述的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法,其 特征在于:在步骤五中,所述的根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地 图的缩放及平移操作的方法是:根据参考矩形的屏幕位置,通过步骤二确定的地图坐标系 和屏幕坐标系间的映射关系,将矢量地图的实际坐标重新转换为屏幕坐标并进行显示,以 实现对矢量地图的缩放及平移操作。
【专利摘要】一种基于鼠标位置实现GDI电子矢量地图缩放及平移的方法。其包括建立地图坐标系及屏幕坐标系;建立参考矩形,计算得到参考矩形的实际长度和实际高度及屏幕长度和屏幕高度,由此在地图坐标系与屏幕坐标系间建立映射关系;获取鼠标滚轮消息,计算缩放因子;根据鼠标移动的距离,计算鼠标平移因子;根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移;根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及平移操作。本发明可以实现对GDI电子矢量地图进行基于鼠标中心的缩放及平移操作,解决了缩放过程中地图出现漂移的问题。本方法实现简单,具有广泛的应用前景。
【IPC分类】G06F3/0484, G06F3/0485
【公开号】CN104898947
【申请号】CN201510276310
【发明人】陈敏, 屈景怡, 吴仁彪
【申请人】中国民航大学
【公开日】2015年9月9日
【申请日】2015年5月26日

最新回复(0)