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二次開發,如果有不對的地方,請多多包涵!