转自原文 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. 如何在win10上同时安装python2和python3

    哎,其实本人已经用惯了python2,听说python3的语法有很多不一样的地方,那我之前写的算法改起来岂不是日了狗了吗?所以一直没改用python3.但是谷歌的那个TensorFlow,在windo ...

  2. Spring项目用junit 时出现org.junit.runners.BlockJUnit4ClassRunner cannot be resolved(转)

    spring框架项目用junit做测试时,程序在自动编译时出现下述问题: 程序的问题是项目中找不到org.junit.runners.BlockJUnit4ClassRunner,有两种可能,一是没有 ...

  3. CODEVS——T2744 养鱼喂妹纸

    http://codevs.cn/problem/2744/ 时间限制: 1 s  空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descr ...

  4. cogs P1578【模板】 次小生成树初级练习题

    1578. 次小生成树初级练习题 ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...

  5. VS:"64位调试操作花费的时间比预期要长"的一解决途径

    解决的方法之中的一个: 在命令提示符那里打入例如以下命令: netsh winsock reset catalog netsh int ip reset reset.log hit 重新启动电脑后,就 ...

  6. JMS基础知识

    JMS规范: jms的基本构件:  连接工厂(connectionFactory):客户用来创建连接的对象.比如:activeMQ提供的ActiveMQConnectionFactory. 连接(co ...

  7. golang filepath.Walk遍历指定目录下的所有文件

    package main import ( "fmt" "os" "path/filepath" ) func walkFunc(path ...

  8. Vue简介以及基本使用

    Vue 是一套构建用户界面的渐进式 框架 框架和库? 框架(基于自身的特点向用户提供一套完整的解决方案,控制权在框架本身,需要使用者按照框架所规定的某种规范进行开发) Vue Angular Reac ...

  9. linux创建新用户并给予root权限

    root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用.所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机.所以,在 ...

  10. 三菱FX系列PLC学习

    1.PLC工作原理 PLC将程序存储在用户存储器当中, 驱动其运行, 相对比微型计算机软件, PLC程序则不同的是, 微型计算机整个流程则是从规定的开始 至结束完整工作流程.相对与PLC运行,则是从位 ...