年度变更建库软件5.0版本
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

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