【MapGIS二次开发】缩放平移等功能的快捷实现

/ 10评 / 0

  MapGIS的绘图功能虽然在GIS软件中算是比较强大的,但便捷操作方面的不足还是让人用起来很不爽,你要放大图件还要点击放大镜按钮后才能实现,加个滚轮缩放不行啊?要拖动图件还得点击手形工具才能实现,直接用鼠标拖拽不行啊?好多制图人员估计都是边作图边骂软件开发人员不人性了。

  其实要在二次开发中实现缩放等功能还是很简单的,不需要知道库函数,只知道快捷键就可以了,MapGIS中缩小的快捷键是F5,放大是F7,因此可以在鼠标滚轮事件中添加模拟键盘按键即可,直接设置鼠标放大缩小会影响图件的上下滚动,因此可以用Ctrl辅助一下,按住Ctrl并转动滚轮时实现图件缩放。代码如下:


BOOL CMyGisToolView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
int stt=GetKeyState(VK_CONTROL); //获得Ctrl键是否按下的状态
if (stt<0&&zDelta>=1) //判断滚轮向上还是向下,向上的话放大
{
keybd_event(116,0,KEYEVENTF_EXTENDEDKEY,0); //F5的代码是116
}
if (stt<0&&zDelta<=1) //向下的话缩小 { keybd_event(118,0,KEYEVENTF_EXTENDEDKEY,0); //F7的代码是118 } return CPrjEditView::OnMouseWheel(nFlags, zDelta, pt); }

  原理知道了,添加平移操作也就很简单了,只不过这里要调用_MoveWindow()函数:


void CMyGisToolView::OnLButtonDown(UINT nFlags, CPoint point)
{
int stt=GetKeyState(VK_CONTROL);
if (stt<0) { _MoveWindow(); } CPrjEditView::OnLButtonDown(nFlags, point); }

  同样的,为了使用方便可以添加双击事件,使得在双击图件的时候图像还原到初始大小:

void CMyGisToolView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
int stt1=GetKeyState(VK_CONTROL);
if (stt1<0) { _RestoreWindow(); } CPrjEditView::OnLButtonDblClk(nFlags, point); }

  其他更多快捷功能的实现你可以自己摸索了,呵呵,原来二次开发也可以这么轻松~~

  源码示例:下载

《 “【MapGIS二次开发】缩放平移等功能的快捷实现” 》 有 10 条评论

  1. 小段说道:

    终于更新了,好久没看到了!

  2. kaka说道:

    what’s this?

  3. 图图网说道:

    不熟,先关注下

  4. 古墓候梅说道:

     MapGIS

    没有用过!!!!!

    不知道怎么样?

  5. 阿修罗说道:

    不错,二次开发,更加成熟。

  6. 蛋卷说道:

    MAPGIS 是干什么用的软件?

    • Pavel说道:

      @蛋卷 呵呵 地理信息系统相关的软件,功能太多了,你搜一下能找到一大堆信息,目前我接触的只是做图和检查模块

  7. 飞晏说道:

    我现在身边做了一群苦苦折腾GIS的师兄和师弟…

回复 飞晏 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注