转自原文 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. jupyter sparkmagic on hdp

    1.安装jupyter 2.安装sparkmagic 3.设置超时 "livy_server_heartbeat_timeout_seconds": 0, 4.设置集群模式 &qu ...

  2. JS实现下拉菜单的功能

    <!DOCTYPE html> <html> <head> <meta charset = "utf8"> <title> ...

  3. 【Django】认证系统

    目录 #. auth模块 1. 认证 authenticate() 2. 登陆 login(HttpRequest, user) 3. 注销 logout(request) 4. 认证判断 is_au ...

  4. 阿里云 Ubuntu14.04 升级 python3.4 到 python 3.5/6

    买的阿里云服务器给的系统是Ubuntu14.04,里面装的Python3版本是Python3.4,本来也没什么,但是这个版本的Python安装flask和django各种报错,所以只好升级Python ...

  5. 如何优雅的写UI——(3)添加MFC选项卡

    窗体创建完成,接下来我们讲讲控件的使用 首先在CFormView窗体下选项卡的成员变量,这里我选择MFC下的选项卡类库:CMFCTabCtrl class CtabView : public CFor ...

  6. worktools-mmx 添加编译模块

    1,添加模块到mmx.py文件 1>vim /home/zhangshuli/git/vanzo_team/xulei/mmx.py 2>按照格式"Gallery2": ...

  7. POJ 1737 Connected Graph (大数+递推)

    题目链接: http://poj.org/problem?id=1737 题意: 求 \(n\) 个点的无向简单(无重边无自环)连通图的个数.\((n<=50)\) 题解: 这题你甚至能OEIS ...

  8. ftp实现图片上传,文件也类似

    本来用得是easyui得控件 点击按钮实现选择图片得 ,但是老板非得要双击图片框实现上传代码....做个简单得记录 前端代码: 首先,<form>表单要加上 enctype="m ...

  9. vmware workstation安装windows server 2019

    提示需要输入密钥,选择[我没有密钥] 选择有桌面体验的 自定义 新建C盘 100G 选择100G的主分区,下一步 PS:未分配的空间,先不理,安装完系统,进桌面,再分配 开始安装.接下来就是等. 等. ...

  10. 八、Docker+RabbitMQ

    原文:八.Docker+RabbitMQ 一.下载镜像 docker pull rabbitmq:management 二.运行 docker run -d --name rabbitmq -e TZ ...