經過PIE SDK加載圖層後,會默認的賦值給數據一個渲染。當用戶從新給數據賦值Render或改變數據顯示效果時,會觸發渲染變化事件。ide
所謂的事件監聽是在事件觸發時,將執行用戶指定的函數或方法,已實現特定的功能。函數
第一步spa |
柵格圖層接口轉換至ILayerEventscode |
第二步視頻 |
OnRenderChanged進行事件綁定,以達到監聽目的。blog |
接口/類教程 |
方法接口 |
說明事件 |
Carto. ILayerEventsci |
OnRenderChanged |
渲染變化事件 |
項目路徑 |
百度雲盤地址下/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 } |