博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIE SDK矢量数据编辑事件的监听
阅读量:4963 次
发布时间:2019-06-12

本文共 5070 字,大约阅读时间需要 16 分钟。

 

1.功能简介

    通过IEditEvents接口,开发者可以监听到Editor对象的相关的事件,并且做出反应。包括Editor中开始编辑、结束编辑等操作,下面对矢量数据的编辑事件的监听功能进行介绍。

2.功能实现说明

2.1实现思路及原理说明

第一步

前提处于编辑状态,在编辑的开始和结束的时候进行触发的操作事件

2.2 核心接口与方法

接口/类

方法/属性

说明

 

 

IEditEvents

OnStartEditOperation;

开始编辑委托事件

OnStopEditOperation

结束编辑委托事件

 

IEditor

GetEditState();

获取编辑状态

StartEditOperation(string strDescription);

开始编辑操作

StopEditOperation()

结束编辑操作

2.3示例代码

项目路径

百度云盘地址下/PIE示例程序/04数据操作/07矢量数据编辑事件的监听

数据路径

 自定义即可

视频路径

百度云盘地址下/PIE视频教程/04数据操作/07矢量数据编辑事件的监听.avi

示例代码

1      //要素编辑器  2         private IEditor m_Editor = Editor.Instance;  3         //鼠标按下起点  4         private IPoint m_StartPoint = null;  5         //要素  6         private IFeature m_Feature = null;  7         //标识符  8         private int m_Flag = 0;  9    //地图初始化绑定编辑监听事件 10   private void FormMain_Load(object sender, EventArgs e) 11         { 12             //初始化绑定编辑监听事件 13             IEditEvents editEvents = Editor.Instance; 14             editEvents.OnStartEditOperation += editEvents_OnStartEditOperation; 15             editEvents.OnStopEditOperation += editEvents_OnStopEditOperation; 16         } 17 //委托事件 18         public void editEvents_OnStartEditOperation() 19         { 20             MessageBox.Show("开始绘制"); 21         } 22         public void editEvents_OnStopEditOperation() 23         { 24             MessageBox.Show("完成绘制"); 25         }     26      27          ///  28         /// 开始编辑 29         ///  30         ///  31         ///  32         private void ToolStripMenuItem_StartEdit_Click(object sender, EventArgs e) 33         { 34             if (m_Editor.GetEditState() == EditState.StateNotEditing) 35             { 36                 MessageBox.Show("开始编辑"); 37                 m_Editor.StartEditing(); 38             } 39         } 40  41         ///  42         /// 结束编辑 43         ///  44         ///  45         ///  46         private void ToolStripMenuItem_StopEdit_Click(object sender, EventArgs e) 47         { 48             if (m_Editor.GetEditState() == EditState.StateEditing) 49             { 50                 if (MessageBox.Show("结束编辑前是否保存编辑数据", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.OK) 51                 { 52                     m_Editor.SaveEditing();//保存编辑                  53                 }               54                     m_Editor.StopEditing(true);//停止编辑                           55             } 56         } 57        ///  58         /// 地图控件鼠标移动事件 59         ///  60         ///  61         ///  62  63         private void mapControlMain_MouseDown(object sender, MouseEventArgs e) 64         { 65             if (e.Button != System.Windows.Forms.MouseButtons.Left) return; 66  67             if (m_Editor.GetEditState() == EditState.StateEditing) 68             { 69                 m_StartPoint = mapControlMain.FocusMap.ToMapPoint(e.Location); 70                 List
layerList = new List
(); 71 int iLayerCount = mapControlMain.FocusMap.LayerCount; 72 if (iLayerCount > 0) 73 { 74 ILayer layer = mapControlMain.GetLayer(iLayerCount - 1); 75 layerList.Add(layer); 76 if (layer.IsValid()) 77 { 78 if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return; 79 80 IGeometry geometry = null; 81 switch (m_Flag) 82 { 83 case 2: 84 mapControlMain.ActiveView.FocusMap.ClearSelectionFeatures(); 85 m_Editor.StartEditOperation("开始编辑"); 86 geometry = mapControlMain.TrackPolygon() as IGeometry; 87 geometry.SpatialReference = mapControlMain.SpatialReference; 88 89 IFeatureClass featureClass = (layer as IFeatureLayer).FeatureClass; 90 m_Feature = featureClass.CreateNewFeature(); //创建Feature 91 m_Feature.Geometry = geometry; 92 featureClass.AddFeature(m_Feature); //添加Feature 93 // featureClass.Save(); //保存 94 m_Editor.StopEditOperation(); 95 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);//不能少 96 m_Flag = 0; //一定要加 97 break; 98 default: 99 break;100 }101 }102 }103 }104 }105 106 ///
107 /// 绘制面状要素108 /// 109 ///
110 ///
111 private void toolStripButton_DrawPolygon_Click(object sender, EventArgs e)112 {113 m_Flag = 2;114 }
View Code

2.4示例截图

 

   

  

转载于:https://www.cnblogs.com/PIESat/p/10168710.html

你可能感兴趣的文章
mysql tan() 函数
查看>>
mysql avg()函数,获取字段的平均值
查看>>
mysql count() 函数,对结果统计计数
查看>>
mysql max()函数,min()函数,获取最大值以及最小值
查看>>
mysql upper() 函数
查看>>
mysql 子查询
查看>>
mysql 自联结
查看>>
mysql union 组合查询
查看>>
mysql 引擎类型
查看>>
mysql 字段添加以及删除
查看>>
软件的分类
查看>>
软件测试
查看>>
软件测试的目的
查看>>
软件测试分类
查看>>
软件测试的原则
查看>>
测试的种类
查看>>
-bash: rvictls: command not found
查看>>
OSWorkFlow 学习
查看>>
网页CSS
查看>>
CSV文件读取
查看>>