CN104898947B - 一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法 - Google Patents
一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法 Download PDFInfo
- Publication number
- CN104898947B CN104898947B CN201510276310.0A CN201510276310A CN104898947B CN 104898947 B CN104898947 B CN 104898947B CN 201510276310 A CN201510276310 A CN 201510276310A CN 104898947 B CN104898947 B CN 104898947B
- Authority
- CN
- China
- Prior art keywords
- mouse
- rectangle
- translation
- scaling
- screen
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Instructional Devices (AREA)
- Processing Or Creating Images (AREA)
Abstract
一种基于鼠标位置实现GDI电子矢量地图缩放及平移的方法。其包括建立地图坐标系及屏幕坐标系;建立参考矩形,计算得到参考矩形的实际长度和实际高度及屏幕长度和屏幕高度,由此在地图坐标系与屏幕坐标系间建立映射关系;获取鼠标滚轮消息,计算缩放因子;根据鼠标移动的距离,计算鼠标平移因子;根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移;根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及平移操作。本发明可以实现对GDI电子矢量地图进行基于鼠标中心的缩放及平移操作,解决了缩放过程中地图出现漂移的问题。本方法实现简单,具有广泛的应用前景。
Description
技术领域
本发明属于电子矢量地图处理技术领域,特别是涉及一种基于鼠标位置实现GDI电子矢量地图缩放及平移的方法。
背景技术
GDI(Graphics Device Interface)含义为图形设备接口,主要任务是负责Windows操作系统与绘图程序之间的信息交互,处理所有Windows应用程序的图形输出。与OpenGL、GDI+、Driect X等绘图引擎相比,GDI具有绘图效率高、使用简单的优点,因而广泛的应用于二维矢量地图的绘制中。然而GDI只能提供基本的二维图形绘制功能,但无法提供二维图形变换功能,因而难以实现电子矢量地图的缩放与平移等高级功能,而OpenGL、GDI+、Driect X等均具有相关的实现函数。另外,现有的GDI电子矢量地图软件在进行缩放操作时,均是以屏幕中心点为参考点对屏幕内绘图对象的像素点按缩放比例换算,但缺点是缩放时矢量地图会发生漂移。
发明内容
为了解决上述问题,本发明的目的在于提供一种基于鼠标位置实现GDI电子矢量地图缩放及平移的方法。
为了达到上述目的,本发明提供的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法包括按顺序进行的下列步骤:
步骤一、建立地图坐标系及屏幕坐标系;
步骤二、建立参考矩形,并设置参考矩形的实际长度和实际高度、屏幕长度和屏幕高度及顶点屏幕坐标,由此在地图坐标系与屏幕坐标系之间建立映射关系;
步骤三、获取鼠标滚轮消息,计算缩放因子;根据鼠标移动的距离,计算鼠标平移因子;
步骤四、根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移;
步骤五、根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及平移操作。
在步骤一中,所述的地图坐标系是以正东方向为X轴,以正北方向为Y轴;屏幕坐标系是以屏幕左上角为原点,x轴沿屏幕向左,y轴垂直于x轴且沿屏幕向下。
在步骤二中,所述的建立参考矩形,并设置参考矩形的实际长度和实际高度以及屏幕长度和屏幕高度的方法是:使参考矩形的中心点与屏幕的中心点重合,参考矩形的实际长宽比例与参考矩形的屏幕长宽比例一致。
在步骤三中,所述的获取鼠标滚轮消息,计算缩放因子α;根据鼠标移动的距离,计算鼠标平移因子的方法是:通过Windows操作系统提供的API接口函数捕获鼠标的滚轮消息和鼠标移动消息,计算得到缩放因子及鼠标平移因子。
在步骤四中,所述的根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移的方法是:通过将鼠标当前屏幕位置与参考矩形的四个顶点连接,将参考矩形分割为四个三角形,依据相似三角形定理,结合缩放因子及鼠标平移因子,计算出经过缩放及平移操作后参考矩形四个顶点的屏幕位置。
在步骤五中,所述的根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及平移操作的方法是:根据参考矩形的屏幕位置,通过步骤二确定的地图坐标系和屏幕坐标系间的映射关系,将矢量地图的实际坐标重新转换为屏幕坐标并进行显示,以实现对矢量地图的缩放及平移操作。
本发明提供的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法与现有技术方案相比具有以下技术效果:本发明在GDI绘图环境下,通过设置参考矩形,简便地实现了电子矢量地图的平移操作,以及基于鼠标位置的地图缩放操作,缩放时以鼠标位置为原点,解决了缩放过程矢量地图发生漂移的问题。本方法不仅适用于矢量电子地图的缩放,还可以适用于图片缩放及其它缩放交互操作。
附图说明
图1为本发明提供的GDI基于鼠标位置实现GDI电子矢量地图缩放及平移的方法流程图。
图2为本发明中使用的两种坐标系示意图。
图3为鼠标位于参考矩形内进行放大操作时参考矩形变化示意图。
图4为鼠标位于参考矩形外进行放大操作时参考矩形变化示意图。
图5为鼠标位于参考矩形内进行缩小操作时参考矩形变化示意图。
图6为鼠标位于参考矩形外进行缩小操作时参考矩形变化示意图。
图7为进行平移操作时参考矩形变化示意图。
具体实施方式
下面结合附图和具体实施例对本发明提供的基于鼠标位置的矢量地图缩放及平移的方法进行详细说明。
图1为本发明提供的GDI基于鼠标位置实现GDI电子矢量地图缩放及平移的方法流程图。其中的全部操作都是在以计算机为核心的计算机系统中完成的,操作的主体均为计算机系统。
如图1所示,本发明提供的基于鼠标位置实现GDI电子矢量地图缩放及平移的方法包括按顺序进行的下列步骤:
步骤一、建立地图坐标系(X,Y)及屏幕坐标系(x,y);
地图坐标系以正东方向为X轴,以正北方向为Y轴。将采用地理坐标系的原始地图数据经过高斯-克吕格投影后投影到地图坐标系下。屏幕坐标系以屏幕左上角为原点,x轴沿屏幕向左,y轴垂直于x轴且沿屏幕向下。上述两种坐标系如图2所示。
步骤二、建立参考矩形,并设置参考矩形的实际长度和实际高度、屏幕长度和屏幕高度及顶点屏幕坐标,由此在地图坐标系与屏幕坐标系之间建立映射关系;
建立参考矩形并设置参考矩形的实际长度Ls及实际高度Hs。设置参考矩形的屏幕长度Lp及屏幕高度Hp。Ls、Hs与Lp、Hp满足如下关系:
使参考矩形的中心点与屏幕的中心点重合。计算参考矩形的四个顶点A,B,C,D的屏幕坐标(xA,yA)、(xB,yB)、(xC,yC)、(xD,yD),计算公式如下:
公式(2)中M为电脑屏幕的横向分辨率,N为电脑屏幕的纵向分辨率。通过参考矩形可以在地图坐标系与屏幕坐标系之间建立映射关系。地图上实际坐标为(X,Y)的点与其在屏幕坐标(x,y)的映射关系为:
步骤三、获取鼠标滚轮消息,计算缩放因子α;根据鼠标移动的距离,计算鼠标平移因子;
响应Windows操作系统的鼠标滚轮消息ON_WM_MOUSEWHEEL,通过Windows操作系统提供的API接口函数OnMouseWheel获得鼠标滚轮转动参数,当转动参数大于0时,表明鼠标在进行放大操作,缩放因子α=α*1.2;当转动参数小于0时,表明鼠标在进行缩小操作,缩放因子α=α/1.2。
响应Windows操作系统的鼠标移动消息ON_WM_MOUSEMOVE,通过Windows操作系统提供的API接口函数OnMouseMove获得鼠标的实时位置,通过计算两次鼠标位置之前的位置差,即可计算出鼠标平移的屏幕距离(△x,△y),即平移因子。
步骤四、根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移;
获取鼠标当前的屏幕位置(xm,ym),根据鼠标当前是否位于参考矩形内部以及进行放大或缩小操作,共可分为四种情况:1、鼠标位于参考矩形内进行放大操作,如图3所示;2、鼠标位于参考矩形外进行放大操作,如图4所示;3、鼠标位于参考矩形内进行缩小操作,如图5所示;4、鼠标位于参考矩形外进行缩小操作,如图6所示;通过分析这四种情况,将鼠标当前屏幕位置与参考矩形的四个顶点连线,将参考矩形分割为四个三角形,依据相似三角形原理,根据缩放因子α,计算出缩放后参考矩形四个顶点A′,B′,C′,D′的屏幕位置(xA′,yA′)、(xB′,yB′)、(xC′,yC′)、(xD′,yD′),计算方法如下:
当进行平移操作时,如图7所示,通过如下方法可计算出平移后的参考矩形四个顶点A′,B′,C′,D′的屏幕位置(xA′,yA′)、(xB′,yB′)、(xC′,yC′)、(xD′,yD′):
在进行缩放及平移操作时,均只改变参考矩形的四个顶点的屏幕坐标,不改变参考矩形的实际大小及四个顶点的实际坐标。
步骤五、根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及平移操作;
根据参考矩形的屏幕位置,依据步骤二建立的地图坐标系与屏幕坐标系间的映射关系,重新更新地图矢量的屏幕坐标,并进行显示,由此实现对矢量地图的缩放及平移操作。
Claims (1)
1.一种基于鼠标位置实现GDI电子矢量地图缩放及平移的方法,其包括按顺序进行的下列步骤:
步骤一、建立地图坐标系及屏幕坐标系;
步骤二、建立参考矩形,并设置参考矩形的实际长度和实际高度、屏幕长度和屏幕高度及顶点屏幕坐标,由此在地图坐标系与屏幕坐标系之间建立映射关系;
步骤三、获取鼠标滚轮消息,计算缩放因子;根据鼠标移动的距离,计算鼠标平移因子;
步骤四、根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移;
步骤五、根据参考矩形重新计算矢量地图的屏幕坐标,实现对矢量地图的缩放及平移操作;
其特征在于:在步骤四中,所述的根据鼠标的当前位置、缩放因子及鼠标平移因子,计算出缩放平移后新的参考矩形的屏幕位置,实现对参考矩形的缩放及平移的方法是:通过将鼠标当前屏幕位置与参考矩形的四个顶点连接,将参考矩形分割为四个三角形,依据相似三角形定理,结合缩放因子及鼠标平移因子,计算出经过缩放及平移操作后参考矩形四个顶点的屏幕位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510276310.0A CN104898947B (zh) | 2015-05-26 | 2015-05-26 | 一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510276310.0A CN104898947B (zh) | 2015-05-26 | 2015-05-26 | 一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104898947A CN104898947A (zh) | 2015-09-09 |
CN104898947B true CN104898947B (zh) | 2017-09-12 |
Family
ID=54031634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510276310.0A Active CN104898947B (zh) | 2015-05-26 | 2015-05-26 | 一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104898947B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664194B (zh) * | 2017-03-29 | 2021-08-06 | 中兴通讯股份有限公司 | 显示方法和装置 |
CN109361665B (zh) * | 2018-10-11 | 2022-01-11 | 高新兴科技集团股份有限公司 | 在移动端实现动态虚拟墙的方法和装置 |
CN109358797B (zh) * | 2018-12-22 | 2021-05-07 | 武汉兴图新科电子股份有限公司 | 一种二维鼠标缩放平移位图的方法 |
CN110147215B (zh) * | 2019-05-14 | 2022-03-11 | 中国民航大学 | 一种实现电子矢量地图快速缩放的方法 |
CN110322775B (zh) * | 2019-05-30 | 2021-06-29 | 广东省机场管理集团有限公司工程建设指挥部 | 机场信息的展示方法、装置、计算机设备和存储介质 |
CN110455307A (zh) * | 2019-07-11 | 2019-11-15 | 大众问问(北京)信息科技有限公司 | 一种导航方法、装置及设备 |
CN110634156A (zh) * | 2019-08-28 | 2019-12-31 | 重庆知行宏图科技有限公司 | 室内平面图的在线配准方法 |
CN110704057B (zh) * | 2019-10-09 | 2021-04-27 | 腾讯科技(深圳)有限公司 | 一种基于地图业务的业务处理方法及相关装置 |
CN115309484B (zh) * | 2022-06-20 | 2023-10-31 | 武汉希马斯科技有限公司 | 基于动态内容屏幕投影自动居中缩放地图的方法及介质 |
CN115309313A (zh) * | 2022-08-09 | 2022-11-08 | 盈帜科技(常州)有限公司 | 一种二维场景海量矢量数据显示方法及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1201183A (zh) * | 1997-06-02 | 1998-12-09 | 索尼株式会社 | 数字地图显示缩放方法、装置及存储缩放程序的存储介质 |
CN103824255A (zh) * | 2014-02-28 | 2014-05-28 | 武汉大学 | 基于Sharpmap的通过鼠标滚轮控制地图缩放方法 |
CN103927169A (zh) * | 2014-04-10 | 2014-07-16 | 南京信息工程大学 | 一种实现gdi+绘制电子地图放缩的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8587617B2 (en) * | 2009-02-04 | 2013-11-19 | Raytheon Company | Apparatus and method for map zooming |
-
2015
- 2015-05-26 CN CN201510276310.0A patent/CN104898947B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1201183A (zh) * | 1997-06-02 | 1998-12-09 | 索尼株式会社 | 数字地图显示缩放方法、装置及存储缩放程序的存储介质 |
CN103824255A (zh) * | 2014-02-28 | 2014-05-28 | 武汉大学 | 基于Sharpmap的通过鼠标滚轮控制地图缩放方法 |
CN103927169A (zh) * | 2014-04-10 | 2014-07-16 | 南京信息工程大学 | 一种实现gdi+绘制电子地图放缩的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104898947A (zh) | 2015-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104898947B (zh) | 一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法 | |
CN107369205B (zh) | 一种移动终端城市二三维联动显示方法 | |
CN103489214A (zh) | 增强现实系统中基于虚拟模型预处理的虚实遮挡处理方法 | |
CN104183016B (zh) | 一种快速的2.5维建筑物模型的构建方法 | |
CN103164121B (zh) | 一种终端软件界面展示的方法和装置 | |
CN102436669A (zh) | 二维矢量地图绘制方法 | |
CN105913488B (zh) | 一种基于三维映射表的三维点云快速重建方法 | |
CN105574931A (zh) | 一种电子地图道路绘制方法及装置 | |
CN107239216A (zh) | 基于触摸屏的绘制处理方法和装置 | |
CN112233215A (zh) | 轮廓渲染方法、装置、设备及存储介质 | |
CN103729610A (zh) | 一种二维码聚焦显示方法及系统 | |
CN113642057A (zh) | 一种自动生成Autocad格式流速矢量图的方法 | |
JP5599503B2 (ja) | 地図描画装置 | |
CN104821007B (zh) | 一种直接在三维地球上进行快视显示的系统 | |
CN107958491B (zh) | 移动增强现实虚拟坐标与施工现场坐标匹配方法 | |
CN104318591B (zh) | 一种带边界平面流场的动态绘制方法 | |
CN102117501B (zh) | 一种3d线条绘制方法及装置 | |
CN109358797A (zh) | 一种二维鼠标缩放平移位图的方法 | |
CN105812764A (zh) | 即时贴图的三维影像产生方法 | |
CN104768018B (zh) | 一种基于深度图的快速视点预测方法 | |
CN103310409A (zh) | 一种Tile-based渲染架构GPU的三角形快速分块方法 | |
CN102930549B (zh) | 利用点阵模板和正交性求解摄像机内参数 | |
CN104915992A (zh) | 基于股骨ct图像的实时阴影体绘制方法 | |
CN103824322A (zh) | 利用透视关系交互创建三维曲线的方法及系统 | |
KR20150116032A (ko) | 증강현실 제공방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |