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     }
View Code

2.4.  示例截图

 

原文地址:https://www.cnblogs.com/PIESat/p/10168098.html