一种实现gdi+绘制电子地图放缩的方法

文档序号:6543231阅读:189来源:国知局
一种实现gdi+绘制电子地图放缩的方法
【专利摘要】本发明公开了一种实现GDI+绘制电子地图放缩的方法,利用GDI+中绘图表面即显示表面和绘制图形的画布大小比例关系实现电子地图的放缩。GDI+中绘图表面大小已知,使用GDI+绘制图形的时候可以看作是在一张画布上绘制,画布的大小可以通过获取的绘图表面的宽度和高度的改变而改变,并且GDI+中能够记录画布的大小同时对画布进行平移、缩放旋转等操作,最后绘图表面显示的既可以是整块画布,也可以是画布的某个部分。该方法可以有效的实现放缩以及优化放缩后的显示效果,同时简便了对选取区域的放缩及放缩后的显示,除此之外,该方法不仅适用于电子地图、也可适用于其他图形的交互操作。
【专利说明】—种实现GDI+绘制电子地图放缩的方法
【技术领域】
[0001]本发明公开了一种实现⑶I+绘制电子地图放缩的方法,涉及图像处理领域。
【背景技术】
[0002]使用⑶I+(Graphics Device Interface,图形设备接口),⑶I+的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。绘制的电子地图在实现交互操作时,平移与旋转可以使用GDI+中Graphics类中的方法直接且较为完美地实现。而在放缩时使用Graphics类的方法后,显示的点状符号变大、线状符号变粗等变化,这些变化将是电子地图非正常显示。解决上述问题一般采用的方法是使用计算机图形学放缩矩阵对已显示的电子地图的坐标重新计算坐标,此方法虽然可以达到放缩的效果,但是涉及到放缩后把选定区域放缩后展现在原有的显示表面还需要对每个绘图点进行重新计算,该方法使用起来不方便而且计算量较大。现有技术中缺少一种根据绘制画布的大小变化以及坐标简单的重新计算,既可实现电子地图的放缩同时优化显示结果的简便方法。

【发明内容】

[0003]本发明所要解决的技术问题是:针对现有技术的缺陷,提供一种实现GDI+绘制电子地图放缩的方法, 利用⑶I+中绘图表面即显示表面和绘制图形的画布大小比例关系实现电子地图的放缩,该方法可以有效的实现放缩以及优化放缩后的显示效果,同时简便了对选取区域的放缩及放缩后的显示,除此之外,该方法不仅适用于电子地图、也可适用于其他图形的交互操作。
[0004]本发明为解决上述技术问题采用以下技术方案:
一种实现GDI+绘制电子地图放缩的方法,具体步骤为:
步骤一、确定电子地图的绘图表面,根据绘图表面的属性得出电子地图的宽度和高度,将绘图表面的宽度和高度作为GDI+绘制图形中初始画布的宽度和高度;
步骤二、根据选取区域或者放缩比例,改变画布的宽度和高度;
步骤三、将所要绘制电子地图的原始数据的坐标换算为屏幕显示的坐标,利用屏幕显示的坐标在画布上绘制出电子地图,坐标换算方程为:
X=(x-xmin) * Min((mapWidth /(xmax_xmin),mapHeight/(ymax_ymin));
Y= (ymax~y) * Min((mapWidth /(xmax_xmin),mapHeight/(ymax-ymin));
其中,X、Y分别为屏幕显示的横纵坐标,X、y分别为原始数据的横纵坐标,xmin、Xfflax分别为原始数据X中最小和最大值,ymin、ymax分别为原始数据I中最小和最大值,mapWidth、mapHeight分别为画布宽度和画布高度且均可改变,MinO代表的是选取括号内两个数中较小的一个;
步骤四、对画布进行平移操作,使画布上需要放大的区域呈现在绘图显示区域中,实现放缩操作。
[0005]做为本发明的进一步优选方案,所述步骤二具体包括对绘制的电子地图进行放大操作、对绘制的电子地图进行缩小操作以及选取区域进行放缩操作:
(201)对绘制的电子地图进行放大操作时,增加画布的宽度mapWidth和高度mapHeigh,根据步骤三中所述的坐标换算方程计算出屏幕显示的坐标,再平铺的绘制在新的画布上;
(202)对绘制的电子地图进行放大操作时,减小画布的宽度mapWidth和高度mapHeigh,根据步骤三中的述的坐标换算方程计算出屏幕显示的坐标,再平铺的绘制在新的画布上;
(203)选取区域进行放缩操作时,先确定选取区域的宽度W和高度H,计算新的画布的宽度 mapWidth’ ’ 与高度 mapHeight’ ’:
mapWidth' ' ^apffidth' *mapffidth/ff ;
mapHeight' ' =mapHeight'氺mapHeight/H ;
其中,mapWidth’、mapHeight’表示的是放缩后画布的宽度和高度,mapWidth’、mapHeight’的初始值等 于初始画布的高度mapHeight和宽度mapWidth。
[0006]做为本发明的进一步优选方案,所述步骤四中采用GDI+中的TranslateTransform (dx, dy)方法对画布进行平移操作,具体为:
以选取区域的中心点(CenterX,CenterY)为标准点,每一次的放缩比例为k, k^apffidth' ' /mapWidth';
或者 k=mapHeight’ ’ / mapHeight’ ;
保持电子地图纵横比,则:mapWidth’ ’ /mapWidth’ = mapHeight’ ’ / mapHeight’ =k ;
设定放缩后标准点的变化后的坐标为(CenterX’,CenterY’),并结合绘图表面的中心坐标(X,Y)计算平移量:dx= CenterX’ -X ;dy= CenterY,-Y ;
其中,dx为画布X方向的平移量,dy为画布Y方向的平移量。
[0007]本发明采用以上技术方案与现有技术相比,具有以下技术效果:本发明利用GDI+中绘图表面即显示表面和绘制图形的画布大小比例关系实现电子地图的放缩,简便地实现电子地图的显示以及放缩的同时,轻松地实现对选取区域的放缩,方便了对电子地图的放缩同时放大后不会出现线条变粗,点符号变大,优化了图形防所的效果。该方法不仅适用于电子地图、也可适用于其他图形的交互操作,因此对实现电子地图的交互具有积极作用。
【专利附图】

【附图说明】
[0008]图1是本发明的流程示意图。
[0009]图2是显示在绘图显示表面的电子地图。
[0010]图3是放大操作的过程示意图。
[0011]图4是放大后的显示结果。
[0012]图5是放大后的平移过程不意图。
[0013]图6是平移后的结果。
[0014]图7是缩小操作的过程示意图。
[0015]图8是缩小操作后的平移过程示意图。[0016]图9是缩小操作后的结果。
[0017]图10是选取区域放大的操作过程第一部分示意图。
[0018]图11是选取区域放大的操作过程第二部分示意图。
[0019]图12是选取区域放大的操作过程第三部分示意图。
[0020]图13是选取区域放大的结果。
【具体实施方式】[0021]下面结合附图对本发明的技术方案做进一步的详细说明:
本方法实现的基础是在GDI+中绘图表面的大小已知,将使用GDI+绘制图形看作是在一张画布上绘制,画布的大小依据获取的绘图表面的宽度和高度而改变,并且GDI+中能够在记录画布大小的同时对画布进行平移、缩放旋转等操作。最后绘图表面显示的可以是整块画布,也可以只是画布的某个部分。
[0022]本发明的流程示意图如图1所示,具体包括:
1、记录显示区域的宽度和高度,将其作为画布的初始宽度和高度;
2、根据选取区域或者想要要放缩的比例,改变画布的宽度和高度;
3、将坐标数据换算为显示区域坐标,利用新的坐标在画布上绘制出电子地图。;
4、对画布进行平移操作,使得画布上需要放大的区域显示绘图表面上,实现放缩操作。
[0023]使用GDI+绘制电子地图首先确定电子地图的绘图表面,根据所述绘图表面的属性可以获取电子地图的宽度和高度,根据电子地图的宽度和高度设置⑶I+绘制图形中初始画布的宽度mapWidth和高度mapHeight。
[0024](I)在绘图表面经过下面的方程进行坐标换算,坐标换算方程为:
X=(x-xmin) * Min((mapWidth /(xmax_xmin),mapHeight/(ymax_ymin));
Y= (ymax~y) * Min((mapWidth /(xmax_xmin),mapHeight/(ymax-ymin));
式中,X、Y分别为屏幕显示的坐标,x、y分别为原始数据的坐标,xmin、xmax分别为原始数据X中最小和最大值,ymin、ymax分别为原始数据Y中最小和最大值,mapWidth、mapHeight分别为画布宽度和画布高度且均可改变,MinO代表的是选取括号内两个数中较小的那一个。电子地图可以在绘图表面以平铺的方式显示出来如图2所示。
[0025](2)对绘制的电子地图进行放大操作时,增加画布的宽度和高度,通过上述的坐标计算公式计算出屏幕显示的坐标,即可平铺的绘制在新的画布上,通过GDI+自身的画布平移就可以把需要放大的部分显示在绘图表面上,并且很轻松地进行平移等其他交互操作。
[0026]放大操作的过程如图3所示,当进行放大操作时,只需要增大画布的宽度和高度即同时将mapWidth、mapHeigh增大相同的数值,利用增大后的mapWidth、mapHeight数值经过上述坐标换算计算出坐标值并绘制电子地图,此时在绘图区域就可看到放大后的图形如图4所示。平移过程示意图如图5所示,然后可以经过平移显示相应的部分如图6所示。
[0027](3)对绘制的电子地图进行缩小操作时,减小画布的宽度和高度,按照与放大相类似的步骤,实现缩小效果,并显示在绘图表面,同时也可以轻松地进行平移等其他操作。
[0028]缩小操作的过程如图7所示,进行缩小操作时,同时将mapWidth、mapHeight减小相同的数值,利用减小后的mapWidth、mapHeight数值进行坐标换算计算出坐标值并绘制电子地图,此时在绘图区域就可看到缩小后的图形,而后可以进行平移操作使其显示在绘图表面的任意区域如图8所示。
[0029](4)选取区域放大的过程依次如图9、图10、图11所示,对绘制的电子地图进行选取区域的放缩操作时,首先确定选取区域的宽度W和高度H,再分别计算选取区域与绘图表面的尺寸比值以及绘图表面与画布区域的尺寸比值,这两个比值相等,由此计算出画布的宽度与高度分别是:
mapWidth' ’ =mapWidth’ *mapffidth/ff;mapHeight' ’ =mapHeight’ *mapHeight/H;其中mapWidth’ ’、mapHeight’ ’表示新的画布的高度和宽度,即我们所要绘制图形的最终画布;mapWidth’、mapHeight’的初始值等于mapWidth、mapHeight即为初始画布的高度和宽度,经过一次放缩后,在进行第二次放缩时,mapWidth’、mapHeight’表示的是第一次放缩后画布的宽度和高度,依照这种记录方式,mapWidth’、mapHeight’表示的为上一次放缩后的画布宽度和高度。为了保持电子地图纵横比,选取Max (mapWidth’’ /mapWidth’,mapHeight’’/ mapHeight’),使得每次放缩高度和宽度的比例是相同的。依次按照换算公式进行电子地图的绘制如图11所示。
[0030]为了使所选区域在经过放缩后显示在绘图表面,需要进行对画布进行平移操作,使用⑶I+中的TranslateTransform(dx, dy)方法对画布进行平移。其中dx为画布x方向的平移量,dy为画布y方向的平移量。dx、dy的计算方法是以选取区域的中心点(CenterX,CenterY)为标准点,通过每一次放缩比例k,其中:
k^apffidth' ' /mapWidth'或者 k=mapHeight' ' / mapHeight';
由上述保持电子地图纵横比可知:
mapWidth' ' /mapWidth' = mapHeight' ' / mapHeight' =k ;
计算出放缩后该标准点的变化后的坐标(CenterX’,CenterY’),然后根据绘图表面的中心坐标(X,Y),就可以得出:dx= CenterX’ -X ;dy= CenterY,-Y ;
按照上述方法进行平移操作后的图形显示在绘图表面即显示区域如图12所示,完成放缩操作如图13所示的结果。确定放缩的倍数后再根据步骤(1)绘制出图形,经过平移等操作使放大后的选取区域显示在人们所看到的绘图表面。
[0031]上面结合附图对本 发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
【权利要求】
1.一种实现GDI+绘制电子地图放缩的方法,其特征在于,具体步骤为: 步骤一、确定电子地图的绘图表面,根据绘图表面的属性得出电子地图的宽度和高度,将绘图表面的宽度和高度作为GDI+绘制图形中初始画布的宽度和高度; 步骤二、根据选取区域或者放缩比例,改变画布的宽度和高度; 步骤三、将所要绘制电子地图的原始数据的坐标换算为屏幕显示的坐标,利用屏幕显示的坐标在画布上绘制出电子地图,坐标换算方程为:
X=(x-xmin) * Min((mapffidth / (xmax_xmin),mapHeight/(ymax_ymin));
Y= (ymax~y) * Min((mapffidth / (xmax_xmin),mapHeight/(ymax-ymin)); 其中,X、Y分别为屏幕显示的横纵坐标,X、y分别为原始数据的横纵坐标,xmin、Xfflax分别为原始数据X中最小和最大值,ymin、ymax分别为原始数据I中最小和最大值,mapWidth、mapHeight分别为画布宽度和画布高度且均可改变,MinO代表的是选取括号内两个数中较小的一个; 步骤四、对画布进行平移操作,使画布上需要放大的区域呈现在绘图显示区域中,实现放缩操作。
2.如权利要求1所述的一种实现GDI+绘制电子地图放缩的方法,其特征在于,所述步骤二具体包括对绘制的电子地图进行放大操作、对绘制的电子地图进行缩小操作以及选取区域进行放缩操作: (201)对绘制的电子地图进行放大操作时,增加画布的宽度mapWidth和高度mapHeigh,根据步骤三中所述的坐标换算方程计算出屏幕显示的坐标,再平铺的绘制在新的画布上; (202)对绘制的电子地图进行放大操作时,减小画布的宽度mapWidth和高度mapHeigh,根据步骤三中的述的坐标换算方程计算出屏幕显示的坐标,再平铺的绘制在新的画布上; (203)选取区域进行放缩操作时,先确定选取区域的宽度W和高度H,计算新的画布的宽度 mapWidth’ ’ 与高度 mapHeight’ ’:
mapWidth' ' ^apffidth' *mapffidth/ff ;
mapHeight' ' =mapHeight'氺mapHeight/H ; 其中,mapWidth’、mapHeight’表示的是放缩后画布的宽度和高度,mapWidth’、mapHeight’的初始值等于初始画布的高度mapHeight和宽度mapWidth。
3.如权利要求1所述的一种实现GDI+绘制电子地图放缩的方法,其特征在于,所述步骤四中采用⑶I+中的TranslateTransform (dx, dy)方法对画布进行平移操作,具体为: 以选取区域的中心点(CenterX,CenterY)为标准点,每一次的放缩比例为k, k^apffidth' ' /mapWidth';
或者 k=mapHeight’ ’ / mapHeight’ ;
保持电子地图纵横比,则:mapWidth’ ’ /mapWidth’ = mapHeight’ ’ / mapHeight’ =k ; 设定放缩后标准点的变化后的坐标为(CenterX’,CenterY’),并结合绘图表面的中心坐标(X,Y)计算平移量:dx= CenterX’ -X ;dy= CenterY,-Y ;`其中,dx为画布X方向的平移量,dy为画布y方向的平移量。
【文档编号】G06F17/30GK103927169SQ201410140116
【公开日】2014年7月16日 申请日期:2014年4月10日 优先权日:2014年4月10日
【发明者】路明月, 刘彬, 郑建琴, 邵一丹, 姜丽, 毕硕本, 范晓梅, 刘爱利 申请人:南京信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1