logo资料库

C#MAPX学习(基于C#的mapx的学习资料).doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
http://www.cnblogs.com/wuhuacong/tag/C%23%e8%bf%9b%e8%a1 %8cMapX%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91/ C#进行 MapX 二次开发之控件基本操作 Posted on 2009-06-26 20:40 伍华聪 阅读(552) 评论(1) 编辑 收藏 网摘 上篇介绍了 MapX 的部分基本使用代码,包括放大、缩小、缩放到初始大小(全图)、平移、矩 形选择、圆形选择、箭头、打开图层对话框 、打开 ActiveX 属性对话框 、添加符号等基本操 作代码,本篇继续探讨一些控件的基本操作。
MapX 提供的标准工具,不同的工具将会使鼠标能够完成多种任务。例如,如果当前的工具设成 miLabelTool,那么当单击鼠标时,会在此特指的地图对象上放置标签。鼠标光标将根据正使用 的工具更改形状。MapX 可用的标准工具列表如下所示: 工具 常量 描述 Add Line MiAddLineTool 向插入图层添加线图元 Add Point MiAddPointTool 单击从而向插入图层添加点图元。 Add Polyline MiAddPolyLineTool Add Region MiAddRegionTool 添加折线图元到插入图层。 添加区域图元到插入图层。 Arrow MiArrowTool 单击标题或注释。并且,它也可用在 可编辑的图层中移动选中的图元或者 改变其大小。 Center MiCenterTool 单击鼠标使地图居中显示。 Label Pan miLabelTool MiPanTool 单击图元进行标注。 拖动地图并重定位地图的中心。 Polygon SelectMiPolygonSelectTool 单击鼠标画多边形;在多边形内的对 象被选中。 Radius Select MiRadiusSelectTool 拖动鼠标并选中在拖动半径内的图 元。 Rect Select MiRectSelectTool 拖动鼠标选中在矩形内的图元。 Select Tool miSelectTool Symbol miSymbolTool Text miTextTool 单击选择图元。 放置符号注释。 放置文本注释。 Zoom In miZoomInTool Zoom Out miZoomOutTool 放大。 缩小。 导出地图为图片的操作代码: if (axMap1.GeoSet.Length < 1) { MessageBox.Show("未加载地图,不能导出!"); return;
} SaveFileDialog exportFD = new SaveFileDialog(); exportFD.Title = "导出当前地图"; exportFD.Filter = "windows bitmap(*.bmp)|*.bmp|GIF (*.GIF) |*.gif|JPEG (*.JPG;JPEG;JPE)|*.JPG|PNG (*.PNG)|*.PNG|PSD (*.PSD)|*.PS D|TIFF (*.TIF)|*.TIF"; if (exportFD.ShowDialog() == DialogResult.OK && (exportFD. FileName) != null) { try { axMap1.ExportSelection = true; switch (exportFD.FilterIndex) { case 1: axMap1.ExportMap(exportFD.FileName, MapXL ib.ExportFormatConstants.miFormatBMP, axMap1.MapPaperWidth, axMap1.Ma pPaperHeight); break; case 2: axMap1.ExportMap(exportFD.FileName, MapXL ib.ExportFormatConstants.miFormatGIF, axMap1.MapPaperWidth, axMap1.Ma pPaperHeight); break; case 3: axMap1.ExportMap(exportFD.FileName, MapXL ib.ExportFormatConstants.miFormatJPEG, axMap1.MapPaperWidth, axMap1.M apPaperHeight); break; case 4:
axMap1.ExportMap(exportFD.FileName, MapXL ib.ExportFormatConstants.miFormatPNG, axMap1.MapPaperWidth, axMap1.Ma pPaperHeight); break; case 5: axMap1.ExportMap(exportFD.FileName, MapXL ib.ExportFormatConstants.miFormatPSD, axMap1.MapPaperWidth, axMap1.Ma pPaperHeight); break; case 6: axMap1.ExportMap(exportFD.FileName, MapXL ib.ExportFormatConstants.miFormatTIF, axMap1.MapPaperWidth, axMap1.Ma pPaperHeight); break; case 7: axMap1.ExportMap(exportFD.FileName, MapXL ib.ExportFormatConstants.miFormatWMF, axMap1.MapPaperWidth, axMap1.Ma pPaperHeight); break; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } 添加图层的操作代码
OpenFileDialog openFile = new OpenFileDialog(); if (openFile.ShowDialog() == DialogResult.OK) { axMap1.Layers.Add(openFile.FileName, 0);//默认值为 0,C #调用不能省略默认值,图层的位置 MapXLib.LayerInfo liinfo; liinfo = new MapXLib.LayerInfoClass(); liinfo.Type = MapXLib.LayerInfoTypeConstants.miLayerI nfoTypeTab; } 查找图元信息: liinfo.AddParameter("AutoCreateDataset", true); MapXLib.Features mX; mX = this.axMap1.Layers[1].AllFeatures; this.listView1.Items.Clear(); foreach (MapXLib.Feature mY in mX) { ListViewItem mZ = new ListViewItem(mY._FeatureID.ToSt mZ.SubItems.Add(mY.Name.ToString()); this.listView1.Items.Add(mZ); ring()); } 查找图层信息
MapXLib.Layers mX; mX = this.axMap1.Layers; this.listView1.Items.Clear(); foreach (MapXLib.Layer mY in mX) { ListViewItem mZ = new ListViewItem(mY._Name); this.listView1.Items.Add(mZ); } 获取鼠标移动的坐标 double x = 0; double y = 0; axMap1.ConvertCoord(ref e.x, ref e.y, ref x, ref y, MapX Lib.ConversionConstants.miScreenToMap); toolStripStatusLabel1.Text = string.Format("X:{0} Y:{1} ", x, y); 放置点工具操作 try { PointTool; MapXLib.Layer mX; mX = this.axMap1.Layers[1]; mX.Editable = true; this.axMap1.Layers.InsertionLayer = mX; this.axMap1.CurrentTool = MapXLib.ToolConstants.miAdd
} catch (Exception ex) { MessageBox.Show(ex.Message); } MapX 自定义工具的使用: 如果需要一种 MapX 没有提供的工具栏按钮,可以使用 Map.CreateCustomTool 方法来创 建自定义工具。创建自定义工具时,需要控制创建工具的“类型”,即:就是要选择此工具是否 允许用户单击,或是单击并拖动来画线,或是单击并拖动来画矩形等等。也可以选择使用自定义 工具时显示的光标。 下面是自定义测量距离和测量面积的操作代码 private void Form1_Load(object sender, EventArgs e) { //记录地图的比例合中心点 this.MapZoom = axMap1.Zoom; this.CenterX = axMap1.CenterX; this.CenterY = axMap1.CenterY; //创建测量距离的 axMap1.CreateCustomTool(99, MapXLib.ToolTypeConstants.miT oolTypePoly, MapXLib.CursorConstants.miCrossCursor, MapXLib.CursorConstants.miCrossCursor, MapXLib.Cursor Constants.miCrossCursor, false); //创建测量面积的工具 axMap1.CreateCustomTool(98, MapXLib.ToolTypeConstants.miT oolTypePolygon, MapXLib.CursorConstants.miCrossCursor,
MapXLib.CursorConstants.miCrossCursor, MapXLib.Cursor Constants.miCrossCursor, false); } private void axMap1_PolyToolUsed(object sender, AxMapXLib.CMa pXEvents_PolyToolUsedEvent e) { if (e.toolNum == 99)//测量距离 { MapXLib.Points pts = (MapXLib.Points)e.points; MapXLib.Point pt1, pt2; double d = 0.0; //计算顺序两个点距离,累计得到总距离 for (int i = 1; i < pts.Count; i++) { pt1 = pts[i]; pt2 = pts[i + 1]; d += axMap1.Distance(pt1.X, pt1.Y, pt2.X, pt2.Y); } this.Text = "距离:" + d.ToString(); } else if (e.toolNum == 98)//面积 { MapXLib.Points pts = (MapXLib.Points)e.points; //偷懒了但是很正确 MapXLib.FeatureFactory dd = axMap1.FeatureFactory; MapXLib.Style style = axMap1.DefaultStyle;
分享到:
收藏