爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 68811|回复: 88

MeteoInfo二次开发教程(二)

[复制链接]

新浪微博达人勋

发表于 2012-3-30 20:33:16 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
第二讲是关于MapView和MapLayout的图形缩放及图元属性查询功能。MeteoInfo类库封装了相应的鼠标事件,相关功能在类库中已经实现,调用起来非常简单方便。

1、在工具栏中添加相应工具:TSB_Select、TSB_ZoomIn、TSB_ZoomOut、TSB_Pan、TSB_FullExtent和TSB_Identifer,当然这些Button的名字你也可以自己起成别的。在状态栏添加一个Label(TSSL_Status):
Image00854.png

2、由于这些工具Click事件的代码会有重复部分,为了简单明了写一个函数处理公共部分:
先在主窗体(frmMain)中定义一个私有变量表示当前选中的ToolStripButton:
ToolStripButton _currentTool;

写一个SetCurrentTool函数:
  1.         private void SetCurrentTool(ToolStripButton currentTool)
  2.         {
  3.             if (!(_currentTool == null))
  4.             {
  5.                 _currentTool.Checked = false;
  6.             }
  7.             _currentTool = currentTool;
  8.             _currentTool.Checked = true;
  9.             TSSL_Status.Text = _currentTool.ToolTipText;
  10.         }
复制代码

3、在各工具按钮的Click事件中添加相应代码,每个功能只需要3行代码,分别给MapView和MapLayout设置鼠标模式以及调用SetCurrentTool函数:
  1.         private void TSB_Select_Click(object sender, EventArgs e)
  2.         {
  3.             mapView1.MouseTool = MouseTools.SelectElements;
  4.             mapLayout1.MouseMode = MouseMode.Select;

  5.             SetCurrentTool((ToolStripButton)sender);
  6.         }

  7.         private void TSB_ZoomIn_Click(object sender, EventArgs e)
  8.         {
  9.             mapView1.MouseTool = MouseTools.Zoom_In;
  10.             mapLayout1.MouseMode = MouseMode.Map_ZoomIn;

  11.             SetCurrentTool((ToolStripButton)sender);
  12.         }

  13.         private void TSB_ZoomOut_Click(object sender, EventArgs e)
  14.         {
  15.             mapView1.MouseTool = MouseTools.Zoom_Out;
  16.             mapLayout1.MouseMode = MouseMode.Map_ZoomOut;

  17.             SetCurrentTool((ToolStripButton)sender);
  18.         }

  19.         private void TSB_Pan_Click(object sender, EventArgs e)
  20.         {
  21.             mapView1.MouseTool = MouseTools.Pan;
  22.             mapLayout1.MouseMode = MouseMode.Map_Pan;

  23.             SetCurrentTool((ToolStripButton)sender);
  24.         }

  25.         private void TSB_FullExent_Click(object sender, EventArgs e)
  26.         {
  27.             Extent aExtent = mapView1.Extent;            

  28.             mapView1.ZoomToExtent(aExtent);
  29.         }

  30.         private void TSB_Identifer_Click(object sender, EventArgs e)
  31.         {
  32.             mapView1.MouseTool = MouseTools.Identifer;
  33.             mapLayout1.MouseMode = MouseMode.Map_Identifer;

  34.             SetCurrentTool((ToolStripButton)sender);
  35.         }
复制代码

OK,大功告成。欲知后事如何,请听下回分解!


Image00855.png

本帖被以下淘专辑推荐:

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-3-30 20:33:41 | 显示全部楼层
沙发
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-30 20:38:57 | 显示全部楼层
地板。EXE 补丁
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-30 20:42:05 | 显示全部楼层
Mark。收藏了,谢谢楼主
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-30 20:45:34 | 显示全部楼层
来晚了  ,辛苦了 王老师
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-30 20:49:17 | 显示全部楼层
本帖最后由 MeteoInfo 于 2012-3-30 20:49 编辑

交作业是正事,这次不能只见mo版一个人的作业了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 19710
发表于 2012-3-30 21:18:27 | 显示全部楼层
@mofangbao噢,你还得王老师布置作业。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-30 21:21:10 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-30 21:25:36 | 显示全部楼层
MeteoInfo 发表于 2012-3-30 20:49
交作业是正事,这次不能只见mo版一个人的作业了。

嘿嘿,王老,我是一个在读大学生,前面的我基本上都会了,等待您的maplayout里面的图例设置讲解以及那个nc数据的地区区域图绘制~~~这是我二次开发的界面图~~~

等值.PNG
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 19710
发表于 2012-3-30 21:29:51 | 显示全部楼层
MeteoInfo 发表于 2012-3-30 21:21
你的作业呢?

王老师,兰溪错了。。。兰溪乖乖闭关去了~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表