转自原文 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;
       
}

Engine工具栏按钮的使用详解的更多相关文章

  1. 第15.15节 PyQt(Python+Qt)入门学习:Designer的menu菜单、toolBar工具栏和Action动作详解

    老猿Python博文目录 老猿Python博客地址 一.引言 Qt Designer中的部件栏并没有菜单.toolBar以及Action相关的部件,仅在MainWindow类型窗口提供了menu.to ...

  2. VC++ WIN32 sdk实现按钮自绘详解.

    网上找了很多,可只是给出代码,没有详细解释,不便初学者理解.我就抄回冷饭.把这个再拿出来说说. 实例图片:    首先建立一个标准的Win32 Application 工程.选择a simple Wi ...

  3. VC++ WIN32 sdk实现按钮自绘详解 之二(关键是BS_OWNERDRAW和WM_DRAWITEM)

    网上找了很多,可只是给出代码,没有详细解释,不便初学者理解.我就抄回冷饭.把这个再拿出来说说. 实例图片:    首先建立一个标准的Win32 Application 工程.选择a simple Wi ...

  4. VC++ WIN32 sdk实现按钮自绘详解 之二.

    网上找了很多,可只是给出代码,没有详细解释,不便初学者理解.我就抄回冷饭.把这个再拿出来说说. 实例图片:    首先建立一个标准的Win32 Application 工程.选择a simple Wi ...

  5. Python连载60-Tkinter布局、按钮以及属性详解

    一.Tkinter​ 1.组件的大致使用步骤 (1)创建总面板 (2)创建面板上的各种组件: i.指定组件的父组件,即依附关系:ii.利用相应的属性对组件进行设置:iii.给组件安排布局. (3)同步 ...

  6. 第十三章、Designer中的按钮Buttons组件详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 Qt Designer中的Buttons部件包括Push Button(常规按钮.一般称按 ...

  7. Arcgis Engine(ae)接口详解(8):临时元素(element)

    //主地图的地图(map)对象 IMap map = null; IActiveView activeView = null; //IGraphicsContainer用于操作临时元素,可以通过map ...

  8. Arcgis Engine(ae)接口详解(7):地图(map)操作

    IMap map = null; //跟map同一层次的activeView对象,他们都是“地图”的对象,map管理地图内容,activeView管理显示内容 IActiveView activeVi ...

  9. Arcgis Engine(ae)接口详解(5):IGeometry几何高级操作

    IPoint point = new PointClass(); point.PutCoords(, ); //ITopologicalOperator接口用于几何对象的几何操作 ITopologic ...

随机推荐

  1. maven 遇到failOnMissingWebXml有关问题解决方法

    (转自) http://blog.csdn.net/liuvlun/article/details/50218507

  2. 洛谷——P2695 骑士的工作

    https://www.luogu.org/problem/show?pid=2695 题目背景 你作为一个村的村长,保卫村庄是理所当然的了.今天,村庄里来了一只恶龙,他有n个头,恶龙到处杀人放火.你 ...

  3. VMware虚拟机XP系统安装

    转载:http://jingyan.baidu.com/article/54b6b9c00e2f452d593b4762.html

  4. code -结合实例总结代码下拉流程

    1.查看手机需要的版本 1)如果手机本来就可以正常工作,可以使用指令 zhangshuli@zhangshuli-MS-:~/Desktop/day_note/plan$ adb shell getr ...

  5. [NOI.AC#34]palinedrome 字符串hash+贪心

    容易看出,只要从两边往中间扫描,碰到相等的就直接分割然后加入答案即可,判断相等用字符串hash #include<bits/stdc++.h> #define REP(i,a,b) for ...

  6. git提交代码到本地仓库和远程仓库

    5.commit代码到本地git仓库 选中需要 Commit 的项目,右键->Team->Commit,       填写相关的 Commit message,并选择需要提交的 Files ...

  7. 想知道WiFi是什么样子的么?

    据英国<每日邮报>报道.英国纽卡斯尔大学博士生路易斯·赫南日前利用定制的仪器为WiFi信号拍照,绘制出一系列展现人类周围无形网络WiFi连接情况的图,这些盘旋环绕的明亮光束,宛如幽灵一般缠 ...

  8. SQL server 2012 安装SQL2012出现报错: 启用 Windows 功能 NetFx3 时出错

    在window server 2012服务器上,安装 SQL Server 2012的过程中,报了一个错误,一个安装失败, 在安装SQL 2012的过程中.出现下面错误:启用 Windows 功能 N ...

  9. DBLINK做系统集

    过度使用DBLINK做系统集成会带来的问题 过度使用DBLINK做系统集成会带来很多问题,问题主要由以下几点: 1. 大量消耗数据库资源: 本地系统每通过DBLINK链接远端系统一次,都会生成一个本地 ...

  10. 104.tcp多线程读写实现群聊

    客户端: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include <w ...