本节将向你介绍,利用ToolStrip制作自定义GIS工具条。

 

步骤如下:

①向ToolStrip中添加一个Button

②向该Button的lmg属性添加图片素材,并将Button的图片比例(ImageScaling)属性设置为自动适应(SizetoFit),自动调整大小(AutoSzize)为真(True)。最后通过调整ToolStrip的图片尺寸缩放比例(lmageSealingSize)为合适尺寸,例如width:48,height:48,最后再手动调节控件的大小。

③双击Buton,在其单击事件下写代码。

 

本例实现的代码如下:

  1. /// <summary>
  2. /// 放大工具
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. private void ZoomIntoolStripButton1_Click(object sender, EventArgs e)
  7. {
  8. //当选中为数据制图时
  9. if (tabControl1.SelectedIndex == 0)
  10. {
  11. //ICommand提供对定义COM命令的成员的访问。
  12. ICommand pCommand = new ControlsMapZoomInToolClass();
  13. //将ICommand强转成ITool
  14. ITool pTool = pCommand as ITool;
  15. //调用ICommand中的OnCreate方法生成放大工具
  16. pCommand.OnCreate(this.axMapControl1.Object);
  17. //设置放大工具命令的作用对象为axMapControl1
  18. this.axMapControl1.CurrentTool = pTool;
  19. }
  20. //当选中为布局视图时
  21. if (tabControl1.SelectedIndex == 1)
  22. {
  23. //ICommand提供对定义COM命令的成员的访问。
  24. ICommand pCommand = new ControlsMapZoomInToolClass();
  25. //将ICommand强转成ITool
  26. ITool pTool = pCommand as ITool;
  27. //调用ICommand中的OnCreate方法生成放大工具
  28. pCommand.OnCreate(this.axPageLayoutControl1.Object);
  29. //设置放大工具命令的作用对象为axPageLayoutControl1
  30. this.axPageLayoutControl1.CurrentTool = pTool;
  31. }
  32. }
  33. /// <summary>
  34. /// 缩小工具
  35. /// </summary>
  36. /// <param name="sender"></param>
  37. /// <param name="e"></param>
  38. private void ZoomOuttoolStripButton2_Click(object sender, EventArgs e)
  39. {
  40. //当选中为数据视图时
  41. if (tabControl1.SelectedIndex == 0)
  42. {
  43. ICommand pCommand = new ControlsMapZoomOutToolClass();
  44. ITool pTool = pCommand as ITool;
  45. pCommand.OnCreate(this.axMapControl1.Object);
  46. this.axMapControl1.CurrentTool = pTool;
  47. }
  48. //当选中为布局视图时
  49. if (tabControl1.SelectedIndex == 1)
  50. {
  51. ICommand pCommand = new ControlsMapZoomOutToolClass();
  52. ITool pTool = pCommand as ITool;
  53. pCommand.OnCreate(this.axPageLayoutControl1.Object);
  54. this.axPageLayoutControl1.CurrentTool = pTool;
  55. }
  56. }
  57. /// <summary>
  58. /// 漫游工具
  59. /// </summary>
  60. /// <param name="sender"></param>
  61. /// <param name="e"></param>
  62. private void PantooltoolStripButton4_Click(object sender, EventArgs e)
  63. {
  64. //当选中为数据视图时
  65. if (tabControl1.SelectedIndex == 0)
  66. {
  67. ICommand pCommand = new ControlsMapPanToolClass();
  68. ITool pTool = pCommand as ITool;
  69. pCommand.OnCreate(this.axMapControl1.Object);
  70. this.axPageLayoutControl1.CurrentTool = pTool;
  71. }
  72. //当选中为布局视图时
  73. if (tabControl1.SelectedIndex == 1)
  74. {
  75. ICommand pCommand = new ControlsMapPanToolClass();
  76. ITool pTool = pCommand as ITool;
  77. pCommand.OnCreate(this.axPageLayoutControl1.Object);
  78. this.axPageLayoutControl1.CurrentTool = pTool;
  79. }
  80. }
  81. /// <summary>
  82. /// 全图工具
  83. /// </summary>
  84. /// <param name="sender"></param>
  85. /// <param name="e"></param>
  86. private void ZoomFulltoolStripButton3_Click(object sender, EventArgs e)
  87. {
  88. //当选中为数据视图时
  89. if (tabControl1.SelectedIndex == 0)
  90. {
  91. ICommand pCommand = new ControlsMapFullExtentCommandClass();
  92. ITool pTool = pCommand as ITool;
  93. pCommand.OnCreate(this.axMapControl1.Object);
  94. this.axMapControl1.CurrentTool = pTool;
  95. pCommand.OnClick();
  96. }
  97. //当选中为布局视图时
  98. if (tabControl1.SelectedIndex == 1)
  99. {
  100. ICommand pCommand = new ControlsMapFullExtentCommandClass();
  101. ITool pTool = pCommand as ITool;
  102. pCommand.OnCreate(this.axPageLayoutControl1.Object);
  103. this.axPageLayoutControl1.CurrentTool = pTool;
  104. pCommand.OnClick();
  105. }
  106. }
  107. /// <summary>
  108. /// 指针选择工具
  109. /// </summary>
  110. /// <param name="sender"></param>
  111. /// <param name="e"></param>
  112. private void SelecttoolStripButton1_Click(object sender, EventArgs e)
  113. {
  114. if (tabControl1.SelectedIndex == 0)
  115. {
  116. ICommand pCommand = new ControlsSelectFeaturesToolClass();
  117. ITool pTool = pCommand as ITool;
  118. pCommand.OnCreate(this.axMapControl1.Object);
  119. this.axMapControl1.CurrentTool = pTool;
  120. }
  121. if (tabControl1.SelectedIndex == 1)
  122. {
  123. ICommand pCommand = new ControlsSelectFeaturesToolClass();
  124. ITool pTool = pCommand as ITool;
  125. pCommand.OnCreate(this.axPageLayoutControl1.Object);
  126. this.axPageLayoutControl1.CurrentTool = pTool;
  127. }
  128. }

 

注:

1、数据视图和布局视图的控件是不同的。

2、全图工具需要添加以下代码,才能生效。

 

  1. pCommand.OnClick();

3、其他工具的制作方法大同小异!


  1. 核心DIY工具函数总结:

 

 谢谢观看!本人初学GIS二次开发,如果有不对的地方,请多多包涵!

  1.  

 

 

版权声明:本文为edcoder原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/edcoder/p/11796495.html