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();
}