PIE SDK栅格图层渲染变化事件监听
1. 功能简介
通过PIE SDK加载图层后,会默认的赋值给数据一个渲染。当用户重新给数据赋值Render或改变数据显示效果时,会触发渲染变化事件。
所谓的事件监听是在事件触发时执行自定义的函数或方法,以实现特定的功能。
2. 功能实现说明
2.1. 实现思路及原理说明
第一步 |
栅格图层接口转换至ILayerEvents |
第二步 |
OnRenderChanged进行事件绑定,以达到监听目的。 |
2.2. 核心接口与方法
接口/类 |
方法 |
说明 |
Carto. ILayerEvents |
OnRenderChanged |
渲染变化事件 |
2.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/07图层渲染/14.栅格渲染变化监听 |
数据路径 |
百度云盘地址下/PIE示例数据/栅格数据/01.GF1/ GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tif |
视频路径 |
百百度云盘地址下/PIE视频教程/07图层渲染/14.栅格渲染变化监听.avi |
示例代码 |
|
![]() 1 (一)渲染变化事件监听 2 if (mapControlMain.ActiveView.CurrentLayer == null)return; 3 IRasterLayer pRasterLayer = mapControlMain.ActiveView.CurrentLayer as IRasterLayer; 4 if (pRasterLayer != null) 5 { 6 //接口转换,添加监听事件 7 ILayerEvents eventsListern = pRasterLayer as ILayerEvents; 8 eventsListern.OnRenderChanged -= eventsListern_OnRenderChanged; 9 eventsListern.OnRenderChanged += eventsListern_OnRenderChanged; 10 } 11 /// <summary> 12 /// 事件方法 13 /// </summary> 14 /// <param name="layer"></param> 15 void eventsListern_OnRenderChanged(ILayer layer) 16 { 17 MessageBox.Show(layer.Name + "渲染方式变化了!"); 18 } 19 20 (二)修改渲染方式,触发事件 21 if (mapControlMain.ActiveView.CurrentLayer == null)return; 22 IRasterLayer pRasterLayer = mapControlMain.ActiveView.CurrentLayer as IRasterLayer; 23 if(pRasterLayer!=null) 24 { 25 IRasterRender rRender = pRasterLayer.Render; 26 IRasterStretch stretch = rRender as IRasterStretch; 27 stretch.StretchType = RasterStretchType.RasterStretch_PercentMinimumMaximum; 28 stretch.LinearStretchPercent = 2; 29 pRasterLayer.RaiseRenderChanged(); 30 mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 31 } |
2.4. 示例截图