ArcEngine9.3编辑工具条的实现
相对与9.2版本,Engine9.3主要在地图编辑(Editing)、网络分析(NetworkAnalyst)和追踪分析(Tracking Analyst)方面做了一些改进。此外,9.3还比之前的版本提供了3-4倍的演示实例,在DevlopKit下的例子大概有150多个,看来ESRI还是在Engine上下了些功夫。详细可参见开发帮助的What's new for ArcGIS Engine developers at 9.3?
9.3之前的版本要写一个理想的自定义编辑工具是比较有难度的。包括一个有效率的节点捕捉工具。一般都是用IworkSpaceEdit接口来实现。最近手头上正好有个9.1版本的编辑工具要修改,代码大概在1万行左右。考虑到9.3在编辑方面的提高,所以先熟悉了一下9.3的新编辑类EngineEditor。再结合以前采用ToolBarControl共享命令池ICommandPool和操作栈IoperationStack的方式。制作了一个简单可行的编辑工具条,包括自定义的节点编辑工具在内,代码在1千行左右。
具体要点为:
1. 每一个自定义编辑工具封装为一个icommand 或者itoolbar类,功能类似的两个工具如添加节点和删除节点可封装在一个继承IcomandSubType的类中。
2. 初始化编辑类EngineEditor。
//engineEditor是singleton类,只能有一个实例
m_engineEditor = new EngineEditorClass();
m_engineEditor.EnableUndoRedo(true);
m_engineEditor.StartEditing(pWS, m_mapControl.Map);
3. 构建一个ToolbarControl,设置其操作栈和命令池。最后将操作栈连接到EngineEditor。
m_toolbarControl = new ToolbarControlClass();
m_toolbarControl.SetBuddyControl(m_mapControl.Object);
//必须初始化命令池和操作栈, 否则出错。
//这个过程类似于在窗体中拖一个AxToolBarControl;
m_pool = new CommandPoolClass();
m_toolbarControl.CommandPool = m_pool;
if (m_operationStack == null)
{
m_operationStack = new ControlsOperationStack();
}
m_operationStack.Reset();
m_toolbarControl.OperationStack = m_operationStack;
IExtension engineEditorExt = m_engineEditor as IExtension;
object obj = (object)m_toolbarControl.Object;
engineEditorExt.Startup(ref obj);
4. 将自定义的编辑工具或者Out-Of-Box工具添加到Toolbarcontrol中,在自定义按钮事件中获取ToolBarControl中的命令。 ICommand cmd = m_toolbarControl.GetItem(3).Command;
m_mapControl.CurrentTool = (ITool)cmd;
5. 为了实时更新工具栏中按钮的Enabled属性与ToolBarControl中的同步,必须声明一个MapControl.AfterDraw委托,在地图刷新的时候更新一次。这么做主要起到保持编辑逻辑防止误操作,以及实时更新”撤消Undo”和”重做Redo”按钮的可用性。
private IMapControlEvents2_OnAfterDrawEventHandler m_onAfterDraw;
m_onAfterDraw = new IMapControlEvents2_OnAfterDrawEventHandler(OnMapAfterDraw);
((IMapControlEvents2_Event)m_mapControl).OnAfterDraw += new IMapControlEvents2_OnAfterDrawEventHandler(m_onAfterDraw);
当然,在结束编辑时要注销掉这个事件:
((IMapControlEvents2_Event)m_mapControl).OnAfterDraw -= new IMapControlEvents2_OnAfterDrawEventHandler(m_onAfterDraw);
5. m_onAfterDraw中要做的事便是:
m_barManager.Items["XX"].Enabled = m_toolbarControl.GetItem(i).Command.Enabled;
来自: http://hi.baidu.com/murphy1314/blog/item/f59e85116f0e5b18b9127ba8.html
ArcEngine9.3编辑工具条的实现相关推荐
- GIS二次开发:实验四 编辑工具条的实现
实验四 编辑工具条的实现 一.实验目的 1.熟悉arcgis中的编辑工具 2.掌握通过arcgis engine 的toolbarcontrol添加编辑工具条 3.掌握自定义工具条的添加 二.实验仪器 ...
- 百度地图之鼠标绘制工具条库(开源库)
百度地图开发常用网站 1.百度地图开放平台 http://lbsyun.baidu.com/ 2.百度地图 Javascript API JavaScript API v3.0 http://lbsy ...
- 工具条研究手记(5)- 自定义工具条的实现
/*****************************************************************/ /* 工具条研究手记(5)- 自定义工具条的实 ...
- [Eclipse]GEF入门系列(六、添加菜单和工具条)
我发现一旦稍稍体会到GEF的妙处,就会很自然的被它吸引住.不仅是因为用它做出的图形界面好看,更重要的是,UI中最复杂和细微的问题,在GEF的设计中无不被周到的考虑并以适当的模式解决,当你了解了这些,完 ...
- 学python语言用什么软件-对于自学python的初学者来说,应该使用什么编辑工具?...
/> 对于零基础的朋友来说,学习Python有一个小门槛或者说小考验,那就是选择写代码的工具. 简单,上网查,用什么工具来写Python代码,答案五花八门,各种编辑器.各种IDE,难道一个个试过 ...
- 初学者python用什么开发软件-对于自学python的初学者来说,应该使用什么编辑工具?...
/> 对于零基础的朋友来说,学习Python有一个小门槛或者说小考验,那就是选择写代码的工具. 简单,上网查,用什么工具来写Python代码,答案五花八门,各种编辑器.各种IDE,难道一个个试过 ...
- 分享5个可视化的正则表达式编辑工具
分享5个可视化的正则表达式编辑工具 发表于2014-11-27 16:19|11596次阅读| 来源CSDN|52 条评论| 作者张红月 正则表达式可视化工具RegexperDebuggexPyreg ...
- VC6中工具条的新特色
加入时间:01-1-8 下午 09:10:32 在Visual C++ 版本6中工具条的新特色 作者: Dave Schmitt 微软在www.microsoft.com/visualc已经推出V ...
- 怎么将arcgis新建工具条如何保存_ArcGIS中寻找最短路径的方法
1 流程图 将两个道路数据统一坐标系,然后合并建立数据集,将未联通的道路路线进行结合,对接便后的道路数据集构建网络,使用追踪分析查找两点间最短路径,流程图如图1-1所示. 图1-1 流程图 2 操作 ...
最新文章
- Drug Target Review | 超越表型:基于AI更好地了解疾病
- python基础知心得总结_【python】基础学习心得总结(一)
- 美国互联网广告07年总开支255亿美元, 增长27%
- 从零基础入门Tensorflow2.0 ----六、32cifar10数据训练
- 数据库 软件实施 工程师
- 关于串口助手(sscom)打开影响32程序跑飞问题。
- matlab求线性规划最大值,matlab线性规划算例
- 2014校园招聘_华为2014校园招聘
- 诺诺开放平台(电子发票、智能编码、发票查验接口调用)
- 兔子会死怎么办? 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,假如兔子会死
- 直方图中bin的说明
- LookupError: Resource omw-1.4 not found. nltk3.7查找近反义词解决方法
- 经典的搞笑反转段子,真是笑死人不偿命
- 22.11.30打卡 记忆化搜索2水题
- 汉庭酒店专属歌曲发布,由左小祖咒和罗永浩创作
- 题目1205 百万富翁问题
- 不需要登录微信,发送消息python
- 这样做数据可视化驾驶舱,高端大气,一目了然,领导不点赞都难
- switch c语言格式,switch语句格式是什么?
- python读啥-Python之文件读写
热门文章
- matlab简单绘图
- Scala当中parallelize并行化的用法
- 腾讯最新股权结构曝光:Naspers持股31.1% 马化腾持股8.61%
- JPS(jump point search)寻路算法
- 手机手写输入法如果支持词组输入将会大幅度提高录入效率
- 【BZOJ1192】鬼谷子的钱袋——二分思想
- i5 10300h和i5 1135g7 参数对比 哪个好
- 趣学算法系列-贪心算法
- 错过金三银四,找工作4个月,面试15家,终于拿到3个offer,定级P7+
- 【保姆级教程】修改VSCode软件的插件下载位置