zl程序教程

您现在的位置是:首页 >  其它

当前栏目

Engine工具栏按钮的使用详解

详解 按钮 Engine 工具栏 使用
2023-09-14 09:02:22 时间

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