在數據種類較多、渲染規則複雜的狀況下,逐個設置其渲染方式是一件繁瑣的工做。PIE SDK提供了一種省力省心的辦法,ide
PIE SDK提供柵格和矢量數據渲染方案的打開與保存。可以將配色方案存儲爲xml文件,並能經過讀取xml文件,實例化出Render對象,這將簡化同類數據的渲染配置工做,並減小開發人員的代碼維護。this
柵格數據渲染方案控制主要是在程序開發以前,根據數據分類組織對應的渲染方案,實如今程序中可以動態的加載顯示方案文件(簡而言之就是每個渲染方案都有一個指定的渲染方案xml文件),對指定圖層進行渲染的。以下圖右側的渲染方案展現,只須要選擇指定的渲染方案當前圖層的顯示就會改變。spa
渲染方案3d
渲染方案保存code |
|
第一步orm |
選中要導出渲染方案的圖層。視頻 |
第二步xml |
選擇渲染方案存儲的路徑,調用Pie SDK導出渲染方案的方法便可對象 |
渲染方案打開blog |
|
第一步 |
選擇渲染方案文件和目標柵格圖層 |
第二步 |
調用Pie生產Render的方法,賦值目標矢量或者柵格圖層的Render屬性 |
第三步 |
地圖視圖刷新 |
渲染方案控制 |
|
第一步 |
組織渲染方案文件進行存儲。 |
第二步 |
程序中進行加載和界面顯示 |
第三步 |
經過事件觸發加載渲染方案方法。 |
第四步 |
地圖視圖刷新 |
接口/類 |
方法 |
說明 |
渲染方案保存與打開 |
||
Carto.RenderFactory |
ImportFromFile() |
柵格經過渲染方案生成Render |
ImportFromFile 1() |
矢量經過渲染方案生成Render |
|
ExportToFile |
將渲染方案存爲xml文件 |
|
渲染方案控制(柵格) |
||
Carto.RenderFactory |
ImportFromFile() |
經過渲染方案生成Render |
項目路徑 |
百度雲盤地址下/PIE示例程序/07圖層渲染/13.地圖圖層渲染方案管理 |
數據路徑 |
百度雲盤地址下/PIE示例數據/柵格數據或者矢量數據 |
視頻路徑 |
百度雲盤地址下/PIE視頻教程/07圖層渲染/13.地圖圖層渲染方案管理.avi |
示例代碼 |
|
![]() 1 #region 矢量渲染方案模塊 2 /// <summary> 3 ///保存矢量渲染方案 4 /// </summary> 5 /// <param name="sender"></param> 6 /// <param name="e"></param> 7 private void btn_SaveVecRender_Click(object sender, EventArgs e) 8 { 9 //一、獲取保存方案數據 10 ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 11 if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return; 12 IFeatureLayer featureLayer = layer as IFeatureLayer; 13 //二、設置保存路徑 14 SaveFileDialog saveDialog = new SaveFileDialog(); 15 saveDialog.Title = "保存顯示方案"; 16 saveDialog.Filter = "Xml文件(*.xml)|*.xml"; 17 if (saveDialog.ShowDialog() != DialogResult.OK) return; 18 //三、執行保存方案 19 RenderFactory.ExportToFile(featureLayer.Render, saveDialog.FileName); 20 } 21 22 /// <summary> 23 /// 打開矢量數據渲染方案 24 /// </summary> 25 /// <param name="sender"></param> 26 /// <param name="e"></param> 27 private void tbn_OpenVecRender_Click(object sender, EventArgs e) 28 { 29 //一、獲取保存方案數據 30 ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 31 if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return; 32 IFeatureLayer featureLayer = layer as IFeatureLayer; 33 //二、選擇渲染的方案 34 OpenFileDialog openDialog = new OpenFileDialog(); 35 openDialog.Title = "打開渲染方案"; 36 openDialog.Filter = "渲染方案(*.xml)|*.xml"; 37 if (openDialog.ShowDialog() != DialogResult.OK) return; 38 //三、執行渲染並刷新 39 featureLayer.Render = RenderFactory.ImportFromFile1(openDialog.FileName); 40 mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 41 } 42 #endregion 43 44 #region 柵格渲染方案模塊 45 /// <summary> 46 /// 保存柵格渲染方案 47 /// </summary> 48 /// <param name="sender"></param> 49 /// <param name="e"></param> 50 private void btn_SaveRasterRender_Click(object sender, EventArgs e) 51 { 52 //一、獲取保存方案數據 53 ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 54 if (layer.LayerType != LayerType.LayerTypeRasterLayer) return; 55 IRasterLayer rasterLayer = layer as IRasterLayer; 56 //二、設置保存路徑 57 SaveFileDialog saveDialog = new SaveFileDialog(); 58 saveDialog.Title = "保存顯示方案"; 59 saveDialog.Filter = "Xml文件(*.xml)|*.xml"; 60 if (saveDialog.ShowDialog() != DialogResult.OK) return; 61 //三、執行保存方案 62 RenderFactory.ExportToFile(rasterLayer.Render, saveDialog.FileName); 63 } 64 65 /// <summary> 66 /// 打開柵格渲染方案 67 /// </summary> 68 /// <param name="sender"></param> 69 /// <param name="e"></param> 70 private void btn_OpenRasterRender_Click(object sender, EventArgs e) 71 { 72 //一、獲取保存方案數據 73 ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 74 if (layer.LayerType != LayerType.LayerTypeRasterLayer) return; 75 IRasterLayer rasterLayer = layer as IRasterLayer; 76 //二、選擇渲染的方案 77 OpenFileDialog openDialog = new OpenFileDialog(); 78 openDialog.Title = "打開渲染方案"; 79 openDialog.Filter = "渲染方案(*.xml)|*.xml"; 80 if (openDialog.ShowDialog() != DialogResult.OK) return; 81 //三、執行渲染並刷新 82 rasterLayer.Render = RenderFactory.ImportFromFile(openDialog.FileName); 83 mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 84 } 85 86 /// <summary> 87 /// 柵格渲染控制案例 88 /// </summary> 89 /// <param name="sender"></param> 90 /// <param name="e"></param> 91 private void btn_RasterRenderControl_Click(object sender, EventArgs e) 92 { 93 ILayer layer = mapControlMain.ActiveView.FocusMap.GetLayer(0); 94 if (layer.LayerType != LayerType.LayerTypeRasterLayer) return; 95 IRasterLayer rasterLayer = layer as IRasterLayer; 96 FormDynamicRender FrmDialog = new FormDynamicRender(rasterLayer, mapControlMain.ActiveView); 97 FrmDialog.Owner = this; 98 FrmDialog.Show(); 99 } 100 #endregion |