转自原文 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. host---域名查询

    host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常. 选项 -a:显示详细的DNS信息: -c<类型>:指定查询类型,默认值为“IN“: -C:查询指定主机的完整的SO ...

  2. dp之多重背包(二进制优化)

    void solve(int v,int w,int c){    int count=0;    for(int k=1;k<=c;k<<=1)    {        val[c ...

  3. listview-fading 滚动条样式设置

    fadingEdge-属性用来设置拉滚动条时 ,边框渐变的方向.它有三个属性值可以设置 none:(边框颜色不变) horizontal:(水平方向颜色变淡) vertical:(垂直方向颜色变淡). ...

  4. 28.lambda表达式与多线程

    #include <iostream> #include <thread> #include <Windows.h> #include <chrono> ...

  5. Eclipse&STS常用小技巧

    开发是经常用到的代码可进行快捷提示,比如mian alt+/就提示出了main方法是不是很方便,为什么就能提示出来呢? 马上来了: 在你使用的java开发工具中点击Window--->Prefe ...

  6. JSTL之C标签学习

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  7. Java学习笔记二.1

    和其他高级语言类似,Java也具有以下部分 1.关键字:见下表,注意Java严格区分大小写,关键字都是小写 2.标识符:见下图 3.注释.有两种://(单行注释)和/**/(多行注释).还有一种文档注 ...

  8. windows新建或者重命名文件及文件夹必须手动刷新才能显示出来

    平台:win8.1 问题:windows新建或者重命名文件及文件夹必须手动刷新才能显示出来 解决方法: 注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ ...

  9. vue.js代码开发最常见的功能集合

    1:点击新增按钮跳出新页面 <span class="inquire" @click="addNew">新增</span> 在方法中,添 ...

  10. mysql测试spring事务是否生效

    同时对三张表进行插入操作,事务保证完整性.下面进行简单测试: 1. 锁定表 锁定用户表 LOCK TABLES user WRITE; 查看表是否锁定: show ; 显示被锁定的表. 2. 验证在同 ...