You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							92 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
	
	
							92 lines
						
					
					
						
							3.9 KiB
						
					
					
				using ESRI.ArcGIS.Carto; | 
						|
using ESRI.ArcGIS.Display; | 
						|
using ESRI.ArcGIS.Geometry; | 
						|
using KGIS.Framework.Maps; | 
						|
using KGIS.Framework.Platform; | 
						|
using KGIS.Plugin.LayerProperty.Enum; | 
						|
using KGIS.Plugin.LayerProperty.Utils; | 
						|
using KGIS.Plugin.LayerProperty.View; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.Linq; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.Services | 
						|
{ | 
						|
    public class LayerPropertyService : ILayerPropertyService | 
						|
    { | 
						|
        public void SetLayerStyle(object pLayer) | 
						|
        { | 
						|
            if (pLayer is ILayer) | 
						|
            { | 
						|
                ILayer layer = pLayer as ILayer; | 
						|
                if (layer.Name == "遥感影像" || layer.Name == "参考影像") | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                //假设layer是一个IFeatureLayer,获取IGeoFeatureLayer | 
						|
                IGeoFeatureLayer geoLayer = layer as IGeoFeatureLayer; | 
						|
                if (geoLayer == null) | 
						|
                { | 
						|
                    //如果不是矢量图层 跳出 | 
						|
                    return; | 
						|
                } | 
						|
                //BUG-03412 图层目录中双击图层样式后,弹出的符号选择和图斑变更中要一样的 | 
						|
                //if (!System.IO.File.Exists(SysAppPath.GetAppLayerConfigsPath())) | 
						|
                // { | 
						|
 | 
						|
                ISymbol symbol = null; | 
						|
                IFeatureLayer2 featureLayer = layer as IFeatureLayer2; | 
						|
                ISimpleRenderer simpleRenderer = (featureLayer as IGeoFeatureLayer).Renderer as ISimpleRenderer; | 
						|
                esriGeometryType geoType = featureLayer.ShapeType; | 
						|
                if (simpleRenderer != null) | 
						|
                { | 
						|
                    symbol = simpleRenderer.Symbol; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    symbol = RenderUtil.GetDefaultSymbol(geoType); | 
						|
                } | 
						|
 | 
						|
                FormSymbolSelector pFrmSS = new FormSymbolSelector() { ShowIcon = true, ShowInTaskbar = true }; | 
						|
                    pFrmSS.Init(); | 
						|
                    FeatureLayer pFeatureLayer = pLayer as FeatureLayer; | 
						|
                    switch (pFeatureLayer.FeatureClass.ShapeType) | 
						|
                    { | 
						|
                        case esriGeometryType.esriGeometryPoint: | 
						|
                            pFrmSS.Init(esriStyleClass.MarkerSymbols, ref symbol); | 
						|
                            break; | 
						|
                        case esriGeometryType.esriGeometryPolyline: | 
						|
                            pFrmSS.Init(esriStyleClass.LineSymbols,ref symbol); | 
						|
                            break; | 
						|
                        case esriGeometryType.esriGeometryPolygon: | 
						|
                            pFrmSS.Init(esriStyleClass.FillSymbols,ref symbol); | 
						|
                            break; | 
						|
                    } | 
						|
                    if (pFrmSS.ShowDialog() == System.Windows.Forms.DialogResult.OK) | 
						|
                    { | 
						|
                        //设置符号化 | 
						|
                        //构造SimpleRenderer | 
						|
                        ISimpleRenderer renderer = new SimpleRendererClass(); | 
						|
                        //renderer.Label = ""; | 
						|
                        //假设sym是一个和该图层中Geometry类型对应的符号; | 
						|
                        renderer.Symbol = pFrmSS.ResultSymbol as ISymbol; | 
						|
                        //为图层设置渲染,注意需要刷新该图层。 | 
						|
                        geoLayer.Renderer = (IFeatureRenderer)renderer; | 
						|
                    Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); | 
						|
                } | 
						|
                //} | 
						|
                //else | 
						|
                //{ | 
						|
                //    UCLayerStyleSet styleView = new UCLayerStyleSet(pLayer as ILayer); | 
						|
                //    styleView.ShowInTaskbar = false; | 
						|
                //    styleView.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; | 
						|
                //    styleView.Width = 700; | 
						|
                //    styleView.Height = 180; | 
						|
                //    styleView.ShowInMainWindow(true); | 
						|
                //} | 
						|
            } | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |