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); |
|
//} |
|
} |
|
} |
|
} |
|
}
|
|
|