Engine工具栏按钮的使用详解

简介:

转自原文 Engine自定义控件实现toolbar功能

 

Engine提供的工具条能够轻易实现各种操作,非常方便,可是不好的地方就是太死板了,toolbar的图标都不能改。因此需要自己做按钮做控件去实现这些功能。

比如说放大和全景

       //放大
        private void ZoomIn_Click(object sender, RoutedEventArgs e)
        {
            ControlsMapZoomInTool zoomintool = new ControlsMapZoomInTool();
            zoomintool.OnCreate(mapControl.Object);
            mapControl.CurrentTool = (ESRI.ArcGIS.SystemUI.ITool)zoomintool;
        }


        //全景
        private void zoomentire_Click(object sender, RoutedEventArgs e)
        {
            ControlsMapFullExtentCommand fullview = new ControlsMapFullExtentCommand();
            fullview.OnCreate(mapControl.Object);
            fullview.OnClick();
        }

分别是调用了CurrentTool 和OnClick的方式。

ArcGIS MapControl 中常用命令

下面列举更多的一些命令。

功能类 事件
放大 ControlsMapZoomInTool 设置
CurrentTool
缩小ControlsMapZoomOutTool 设置
CurrentTool
打开文件ControlsOpenDocCommand OnClick()
添加数据ControlsAddDataCommand OnClick()
全图ControlsMapFullExtentCommand OnClick()
查找ControlsMapFindCommand OnClick()
属性工具ControlsMapIdentifyTool 设置
CurrentTool
选择Feature ControlsSelectFeaturesTool 设置
CurrentTool
清除选择ControlsClearSelectionCommand OnClick()
开始编辑ControlsEditingStartCommand OnClick()
保存编辑ControlsEditingSaveCommand OnClick()
停止编辑ControlsEditingStopCommand OnClick()
编辑工具ControlsEditingEditTool 设置
CurrentTool
属性编辑命

ControlsEditingAttributeCommand OnClick()
测量工具ControlsMapMeasureTool 设置
CurrentTool
创建路径(网
络分析)
ControlsNetworkAnalystRouteCommand OnClick()
创建路径点ControlsNetworkAnalystCreateLocationTool 设 置
CurrentTool
最短路径查

ControlsNetworkAnalystSolveCommand OnClick()
Scene缩小ControlsSceneExpandFOVCommand OnClick()
当然,还有很多很多其他的命令。从上面的列表比较我们也可以看出,一般
来说,如果类的后缀是Command,则用OnClick方法;如果是Tool,则设置Map
的CurrentTool属性为该工具。

 

ArcSence中的命令使用示例

以下是scenecontrol的一些:

      private void btn_zoomin_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsSceneZoomInTool();//ControlsSceneZoomInToolClass();
            command.OnCreate(this.axSceneControl1.Object);
            this.axSceneControl1.CurrentTool = command as ESRI.ArcGIS.SystemUI.ITool;
        }

        private void btnzoomout_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsSceneZoomOutTool();
            command.OnCreate(this.axSceneControl1.Object);
            this.axSceneControl1.CurrentTool = command as ESRI.ArcGIS.SystemUI.ITool;
        }

        //飞行模式。。
        private void btntoolfly_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsSceneFlyToolClass();//ControlsSceneZoomInToolClass();
            command.OnCreate(this.axSceneControl1.Object);
            this.axSceneControl1.CurrentTool = command as ESRI.ArcGIS.SystemUI.ITool;
        }


        //选择模式..
        private void btnSelect_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsSceneSelectFeaturesToolClass();//ControlsSceneZoomInToolClass();
            command.OnCreate(this.axSceneControl1.Object);
            this.axSceneControl1.CurrentTool = command as ESRI.ArcGIS.SystemUI.ITool;
        }

        //放大至目标区域
        private void btntargetzoom_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsSceneTargetZoomToolClass();//ControlsSceneZoomInToolClass();
            command.OnCreate(this.axSceneControl1.Object);
            this.axSceneControl1.CurrentTool = command as ESRI.ArcGIS.SystemUI.ITool;
        }

        //全景
        private void btnFullExtern_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsSceneFullExtentCommandClass();
            command.OnCreate(this.axSceneControl1.Object);
            command.OnClick();
        }

        private void btnpan_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsScenePanTool();
            command.OnCreate(this.axSceneControl1.Object);
            this.axSceneControl1.CurrentTool = command as ESRI.ArcGIS.SystemUI.ITool;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ICommand command = new ControlsSceneNavigateTool();
            command.OnCreate(this.axSceneControl1.Object);
            this.axSceneControl1.CurrentTool = command as ESRI.ArcGIS.SystemUI.ITool;
        }

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。






    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6306807.html ,如需转载请自行联系原作者




相关文章
|
2月前
|
传感器 存储 数据采集
基于 STM32 的睡眠质量检测仪设计与实现【开源免费】
在当今快节奏的生活方式下,越来越多的人面临 失眠、睡眠不足、深度睡眠时间偏短 等健康问题。良好的睡眠不仅是缓解疲劳的关键,更是维持身体免疫力和心理健康的重要保障。传统的睡眠质量检测往往依赖昂贵的医疗设备或专业睡眠实验室,而这些方式成本高、使用不便,不适合日常监测。
基于 STM32 的睡眠质量检测仪设计与实现【开源免费】
|
11月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
201 13
|
11月前
|
机器学习/深度学习 人工智能 搜索推荐
AI与体育训练:运动表现分析
【10月更文挑战第31天】本文探讨了AI在体育训练中的应用,特别是在运动表现分析方面。通过数据收集与处理、深度分析与挖掘、实时反馈与调整三个环节,AI为运动员和教练提供了高效、个性化的训练计划和比赛策略,显著提升了训练效率和比赛成绩。未来,AI将在数据隐私、情感理解及跨学科合作等方面继续发展,为体育事业带来更多可能性。
1043 1
|
11月前
|
JSON 搜索推荐 C++
vscode如何更改背景颜色主题,黑色或白色?
【11月更文挑战第16天】在 VS Code 中更改背景颜色主题,可通过三种方式实现:1) 使用快捷键 Ctrl+K 和 Ctrl+T(Mac 上为 Command+K 和 Command+T)选择主题;2) 通过菜单中的“管理”->“颜色主题”选项选择;3) 修改 settings.json 文件中的 "workbench.colorTheme" 属性。此外,用户还可从扩展市场安装更多主题以满足个性化需求。
23382 6
|
Java API Apache
key-value配对:java Pair<L, R>api使用
key-value配对:java Pair<L, R>api使用
key-value配对:java Pair<L, R>api使用
|
存储 Ubuntu Linux
ZYNQ - 嵌入式Linux开发 -02- 用户权限管理和磁盘管理
ZYNQ - 嵌入式Linux开发 -02- 用户权限管理和磁盘管理
438 0
ZYNQ - 嵌入式Linux开发 -02- 用户权限管理和磁盘管理
|
存储 自然语言处理 Java
|
7天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
1天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。