AE開發中實現Control中的各種圖形工具的方法

Controls中的工具基本可以分爲兩類:

第一類:點擊工具圖標或按鈕後,當前axMapControl的工具即爲所點擊的工具命令。

                前面有Controls 後面有tool的工具都可以用同一類的代碼實現(最後的tool或toolclass都可以)

private void 放大ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            ICommand Cmd = new ControlsMapZoomInTool();

            Cmd.OnCreate(this.axMapControl1.Object);

            this.axMapControl1.CurrentTool = Cmd as ITool;

        } 

同類工具用到次方法的還有一些:

放大:ICommand Cmd = new ControlsMapZoomInTool();

縮小:   ControlsMapZoomOutTool Cmd = new ControlsMapZoomOutTool();

漫遊: ControlsMapPanTool Cmd = new ControlsMapPanTool();

繪製矩形:ControlsNewRectangleTool Cmd = new ControlsNewRectangleTool();

繪製圓:ControlsNewCircleTool Cmd = new ControlsNewCircleTool();

繪製橢圓: ControlsNewEllipseTool Cmd = new ControlsNewEllipseTool();

繪製曲線: ControlsNewCurveTool Cmd = new ControlsNewCurveTool();

繪製直線: ControlsNewLineTool Cmd = new ControlsNewLineTool();

繪製點標記: ControlsNewMarkerTool Cmd = new ControlsNewMarkerTool();

流方法繪圖: ControlsNewFreeHandTool Cmd = new ControlsNewFreeHandTool();

墨水繪圖: ControlsInkPenTool Cmd = new ControlsInkPenTool();

                      ControlsInkGenericDrawTool Cmd = new ControlsInkGenericDrawTool();

旋轉工具:  ControlsMapRotateTool Cmd = new ControlsMapRotateTool();

旋轉圖形: ControlsRotateElementTool Cmd = new ControlsRotateElementTool();

選擇要素:ControlsSelectFeaturesTool Cmd = new ControlsSelectFeaturesTool();

選擇圖形: ControlsSelectTool Cmd = new ControlsSelectTool();

屬性工具: ControlsMapIdentifyTool Cmd = new ControlsMapIdentifyTool();

測量工具: ControlsMapMeasureTool Cmd = new ControlsMapMeasureTool();

超鏈接工具: ControlsMapHyperlinkTool Cmd = new ControlsMapHyperlinkTool();

 

 

第二類:點擊工具或按鈕後,即可實現點擊工具的作用

                Command命令的實現,前面是Controls 後面是CommandClass命令的都可以用這個程序

示例:

全圖顯示:

private void 全圖ToolStripMenuItem_Click(object sender, EventArgs e)

    {

            ICommand Cmd = new ControlsMapFullExtentCommandClass();

            Cmd.OnCreate(this.axMapControl1.Object);

            Cmd.OnClick();

   }

類似可以實現的功能有:

座標查找: ICommand Cmd = new ControlsMapGoToCommand();

查找命令:ICommand Cmd = new ControlsMapFindCommandClass();

創建書籤: ICommand Cmd = new ControlsMapCreateBookmarkCommandClass();

墨跡設置:ICommand Cmd = new ControlsInkOptionsCommandClass();

清楚旋轉: ICommand Cmd = new ControlsMapClearMapRotationCommandClass();

轉到頁底:  ICommand Cmd = new ControlsMapPageDownCommandClass();

轉到頁左: ICommand Cmd = new ControlsMapPageLeftCommandClass();

轉到頁右: ICommand Cmd = new ControlsMapPageRightCommandClass();

轉到頁上:ICommand Cmd = new ControlsMapPageUpCommandClass();

向右:  ICommand Cmd = new ControlsMapRightCommandClass();

向上: ICommand Cmd = new ControlsMapUpCommandClass();

中心放大:ICommand Cmd = new ControlsMapZoomInFixedCommandClass();

中心縮小:  ICommand Cmd = new ControlsMapZoomOutFixedCommandClass();

後一視圖:  ICommand Cmd = new ControlsMapZoomToLastExtentBackCommandClass();

前一視圖: ICommand Cmd = new ControlsMapZoomToLastExtentForwardCommandClass();

地方查找: ICommand Cmd = new ControlsMyPlacesCommandClass();

打開文檔: ICommand Cmd = new ControlsOpenDocCommandClass();

撤銷:  ICommand Cmd = new ControlsRedoCommandClass();

圖形向左旋轉: ICommand Cmd = new ControlsRotateLeftCommandClass();

向右旋轉: ICommand Cmd = new ControlsRotateRightCommandClass();

文檔另存爲: ICommand Cmd = new ControlsSaveAsDocCommandClass();

選擇第一個圖層中的所有元素:ICommand Cmd = new ControlsSelectAllCommandClass();

選擇屏幕中的所有部分: ICommand Cmd = new ControlsSelectScreenCommandClass();

撤銷命令:ICommand Cmd = new ControlsUndoCommandClass();

縮放到被選擇的部分: ICommand Cmd = new ControlsZoomToSelectedCommandClass();

 

************************************************************

補充:上面的某些功能的其他實現方法

幾個特殊的方法:

private void 全圖ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            this.axMapControl1.Extent = this.axMapControl1.FullExtent;

        }

 

        private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            axMapControl1.Refresh();

        }

 

        private void 中心放大ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            IEnvelope objEnvelope = null;

            objEnvelope = axMapControl1.Extent;

            objEnvelope.Expand(0.2, 0.2, true);

            axMapControl1.Extent = objEnvelope;

        }

 

        private void 中心縮小ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            IEnvelope objEnvelope = null;

            objEnvelope = axMapControl1.Extent;

            objEnvelope.Expand(2, 2, true);

            axMapControl1.Extent = objEnvelope;

        }

 

        private void 前一視圖ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            IExtentStack pExtentStack = null;

            pExtentStack = axMapControl1.ActiveView.ExtentStack;

            if (pExtentStack.CanUndo())

            {

                pExtentStack.Undo();

            }

            axMapControl1.Refresh();

        }

 

        private void 後一視圖ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            IExtentStack pExtentStack = null;

            pExtentStack = axMapControl1.ActiveView.ExtentStack;

            if (pExtentStack.CanRedo())

            {

                pExtentStack.Redo();

            }

            axMapControl1.Refresh();

        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章