AE开发中实现Control中的各种图形工具的方法

转载自https://blog.csdn.net/u011116642/article/details/9492271?locationNum=13

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();
}
posted @ 2018-07-04 18:18  白石江边  阅读(726)  评论(1编辑  收藏  举报