『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS二次开发-如何实现在ArcMap上进行测量

ArcGIS二次开发-如何实现在ArcMap上进行测量
距离的测量:要实现的是测量两个点之间的距离。用 ToolControl 实现,选中工具后,在测量的开始点按鼠标左键,鼠标拖动过程中实时画一条从开始点到鼠标当前位置的橡皮线,计算并显示开始点到目标点的距离,释放左键后擦除所画的线和文本。 

       要实时显示结果,计算过程应该在 MouseMove 事件中处理。 

       要绘制橡皮线,必须设置当前绘图模式为 esriROPXOrPen。即混合后的颜色取为当前背景色和画笔颜色的“异或”结果。这样在设定了画笔颜色后,在同一位置第二次画同一图形,就会将图形“擦除”,并恢复原来的背景色。 

       所有的对设备(包括显示器、打印机、内存位图)的绘图操的前后都应分别调用 IDisplay 的两个方法 StartDrawing 和 EndDrawing。StartDrawing 可以准备特定的设备环境,管理本例中要用到的各种 Symbols,FinishDrawing 完成收尾工作,以保证下一次对 StartDrawing 的调用不会出错。 
       函数 UITMeasureDistance_Deactivate是Deactivate属性的处理代码,当工具失去焦点时,清除已创建的对象。过程 UITMeasureDistance_MouseDown 是MouseDown 事件的处理代码 , 当鼠标键按下时 , 记录起始点 。 过 程UITMeasureDistance_MouseMove是MouseMove事件的处理代码,鼠标移动过程中测量距离,计算文本显示的角度,以及完成屏幕上橡皮线的绘制。过程UITMeasureDistance_MouseUp 是 MouseUp 事件的处理代码,当释放鼠标键时,擦除刚绘制的图形。函数 GetSmashedLine 将获得一条 IPolyline 对象,这条Polyline 在要显示文本的地方留下了空白,以防止出现所画线穿过文字的现象。

       另外,本例未考虑坐标系的转换,在球面地理坐标系是测量结果为经度差或纬度差。 






      京ICP备2025132830号-1 京公网安备 号