资源描述:
《C_开发MapInfo教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、·C#开发GIS应用简明教程·http://developer.51cto.com 2009-09-0217:38 lijipan CSDN 我要评论(0)这篇是C#开发GIS应用简明教程,从工具开始将其,包括设计窗体、创建永久图层等等。希望本文能对大家有所帮助。C#开发GIS,这里将介绍MapX为开发人员提供一系列的工具,包括C#对MAPX图元的编程技术。这些工具的使用,可以通过MapX的帮助文档中查到。1.工具(ToolConstants)MapX为开发人员提供一系列的工具,这些工具的作用各有不同,我们通过开发一个应用程序来了解这些工具的作用,至于这些工具的具
2、体说明,可以在MapX的帮助文档中,通过查找"AvailableStandardTools"看到相应的解释.一些MapX的相关资料也有介绍.在.NET编程环境中新建一个C#的WindosApplication(Windows应用程序)项目,然后在菜单中选择”项目/添加引用”,打开如下图的窗口,在窗口中选择COM标签,在组件名称列表中双击MapInfoMapXV5.单击"确认"按钮,将Map5控件加入到.Net的工具箱中.接着,将MapInfoMapXV5控件画到窗体上,再在窗体上画一个ComboBox控件comboBox1.如下图:双击设计窗体,编写Form1_L
3、oad代码如下:1.privatevoidForm1_Load(objectsender,System.EventArgse)2.{3.ArrayListToolsList=newArrayList();4.ToolsList.Add(MapXLib.ToolConstants.miArrowTool);5.ToolsList.Add(MapXLib.ToolConstants.miCenterTool);6.ToolsList.Add(MapXLib.ToolConstants.miLabelTool);7.ToolsList.Add(MapXLib.ToolC
4、onstants.miPanTool);8.ToolsList.Add(MapXLib.ToolConstants.miPolygonSelectTool);9.ToolsList.Add(MapXLib.ToolConstants.miRadiusSelectTool);10.ToolsList.Add(MapXLib.ToolConstants.miSymbolTool);11.ToolsList.Add(MapXLib.ToolConstants.miTextTool);12.ToolsList.Add(MapXLib.ToolConstants.miZoo
5、mInTool);13.ToolsList.Add(MapXLib.ToolConstants.miZoomOutTool);14.comboBox1.DataSource=ToolsList;15.}以上代码通过一个数组ToolsList,将MapXLib的工具加入到comboBox1中.MapX还有一些其它的工具,它们的作用是往地图上加上点,线,多边型和圆.因为这些工具要求有操作图层,一并在介绍图层的时候介绍.关于ArrayList的用法,请参考C#的有关资料.接着,双击comboBox1,并编写代码如下1.privatevoidcomboBox1_Selec
6、tedIndexChanged(objectsender,System.EventArgse)2.{3.axMap1.CurrentTool=(MapXLib.ToolConstants)comboBox1.SelectedItem;4.}应注意,在C#中必须要显式地把comboBox1的选择项目SelectedItem(数据类型为object)转换为MapXLib.ToolConstants.因为ToolConstants是MapX自己定义的一个枚举数据类型,C#不能自动完成这种枚举成员变量到object的数据转换.编译执行程序,从comboBox1中选择不同的
7、工具,在地图上进行操作,你可以了解到MapX工具集的强大功能.实际上,MapX提供的工具集就好像Photoshop,AutoCAD的工具栏一样,为你提供了一些控制地图的工具.但是,在开发GIS的时候,这些工具是不能完全满足要求的.所以,还应该学会自定义工具.下面,通过一个在地图上测距的例子,来介绍一下如何在C#下自定义MapX工具如前所述建立一个C#的Windows应用程序并将MapinfoMapXV5控件加到窗体上.并加入一个Button控件button1.将button1的Text属性改为"测距",再在窗口中放上两个Label控件label1,label2,将
8、它们的Te