ArcGIS Engine製作DIY地圖工具
- 2019 年 11 月 5 日
- 筆記
本節將向你介紹,利用ToolStrip製作自定義GIS工具條。
步驟如下:
①向ToolStrip中添加一個Button
②向該Button的lmg屬性添加圖片素材,並將Button的圖片比例(ImageScaling)屬性設置為自動適應(SizetoFit),自動調整大小(AutoSzize)為真(True)。最後通過調整ToolStrip的圖片尺寸縮放比例(lmageSealingSize)為合適尺寸,例如width:48,height:48,最後再手動調節控制項的大小。
③雙擊Buton,在其單擊事件下寫程式碼。
本例實現的程式碼如下:
/// <summary> /// 放大工具 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ZoomIntoolStripButton1_Click(object sender, EventArgs e) { //當選中為數據製圖時 if (tabControl1.SelectedIndex == 0) { //ICommand提供對定義COM命令的成員的訪問。 ICommand pCommand = new ControlsMapZoomInToolClass(); //將ICommand強轉成ITool ITool pTool = pCommand as ITool; //調用ICommand中的OnCreate方法生成放大工具 pCommand.OnCreate(this.axMapControl1.Object); //設置放大工具命令的作用對象為axMapControl1 this.axMapControl1.CurrentTool = pTool; } //當選中為布局視圖時 if (tabControl1.SelectedIndex == 1) { //ICommand提供對定義COM命令的成員的訪問。 ICommand pCommand = new ControlsMapZoomInToolClass(); //將ICommand強轉成ITool ITool pTool = pCommand as ITool; //調用ICommand中的OnCreate方法生成放大工具 pCommand.OnCreate(this.axPageLayoutControl1.Object); //設置放大工具命令的作用對象為axPageLayoutControl1 this.axPageLayoutControl1.CurrentTool = pTool; } } /// <summary> /// 縮小工具 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ZoomOuttoolStripButton2_Click(object sender, EventArgs e) { //當選中為數據視圖時 if (tabControl1.SelectedIndex == 0) { ICommand pCommand = new ControlsMapZoomOutToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axMapControl1.Object); this.axMapControl1.CurrentTool = pTool; } //當選中為布局視圖時 if (tabControl1.SelectedIndex == 1) { ICommand pCommand = new ControlsMapZoomOutToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axPageLayoutControl1.Object); this.axPageLayoutControl1.CurrentTool = pTool; } } /// <summary> /// 漫遊工具 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PantooltoolStripButton4_Click(object sender, EventArgs e) { //當選中為數據視圖時 if (tabControl1.SelectedIndex == 0) { ICommand pCommand = new ControlsMapPanToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axMapControl1.Object); this.axPageLayoutControl1.CurrentTool = pTool; } //當選中為布局視圖時 if (tabControl1.SelectedIndex == 1) { ICommand pCommand = new ControlsMapPanToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axPageLayoutControl1.Object); this.axPageLayoutControl1.CurrentTool = pTool; } } /// <summary> /// 全圖工具 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ZoomFulltoolStripButton3_Click(object sender, EventArgs e) { //當選中為數據視圖時 if (tabControl1.SelectedIndex == 0) { ICommand pCommand = new ControlsMapFullExtentCommandClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axMapControl1.Object); this.axMapControl1.CurrentTool = pTool; pCommand.OnClick(); } //當選中為布局視圖時 if (tabControl1.SelectedIndex == 1) { ICommand pCommand = new ControlsMapFullExtentCommandClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axPageLayoutControl1.Object); this.axPageLayoutControl1.CurrentTool = pTool; pCommand.OnClick(); } } /// <summary> /// 指針選擇工具 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SelecttoolStripButton1_Click(object sender, EventArgs e) { if (tabControl1.SelectedIndex == 0) { ICommand pCommand = new ControlsSelectFeaturesToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axMapControl1.Object); this.axMapControl1.CurrentTool = pTool; } if (tabControl1.SelectedIndex == 1) { ICommand pCommand = new ControlsSelectFeaturesToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axPageLayoutControl1.Object); this.axPageLayoutControl1.CurrentTool = pTool; } }
註:
1、數據視圖和布局視圖的控制項是不同的。
2、全圖工具需要添加以下程式碼,才能生效。
pCommand.OnClick();
核心DIY工具函數總結:

謝謝觀看!本人初學GIS二次開發,如果有不對的地方,請多多包涵!