ArcGIS Engine图层简单符号化

符号化面状图层,不填充,只符号化边线。

代码如下:

/// <summary>
/// 要素图层符号化类
/// </summary>
public class FeatureLayerSymbolizationHelper
{
	/// <summary>
	/// 根据RGB分量构造颜色对象
	/// </summary>
	/// <param name="R">R分量</param>
	/// <param name="G">G分量</param>
	/// <param name="B">B分量</param>
	/// <returns>颜色对象</returns>
	private static IRgbColor GetRGBColor(int R, int G, int B) => new RgbColorClass { Red = R, Green = G, Blue = B };

	/// <summary>
	/// 空心样式符号化
	/// </summary>
	/// <param name="pFeatureLayer">要素图层</param>
	/// <param name="nColorR">边线颜色R分量</param>
	/// <param name="nColorG">边线颜色G分量</param>
	/// <param name="nColorB">边线颜色B分量</param>
	/// <param name="nOutLineWidth">边线宽度</param>
	public static void HollowSymbol(IFeatureLayer pFeatureLayer, int nColorR, int nColorG, int nColorB, int nOutLineWidth = 1)
	{
		SimpleFillSymbol(pFeatureLayer, esriSimpleFillStyle.esriSFSHollow, new RgbColorClass() { Red = 0, Green = 0, Blue = 0 }, GetRGBColor(nColorR, nColorG, nColorB), nOutLineWidth);
	}

	/// <summary>
	/// 空心样式符号化
	/// </summary>
	/// <param name="pFeatureLayer">要素图层</param>
	/// <param name="pOutLineColor">边线颜色</param>
	/// <param name="nOutLineWidth">边线宽度</param>
	public static void HollowSymbol(IFeatureLayer pFeatureLayer, IColor pOutLineColor, int nOutLineWidth = 1)
	{
		SimpleFillSymbol(pFeatureLayer, esriSimpleFillStyle.esriSFSHollow, new RgbColorClass() { Red = 0, Green = 0, Blue = 0 }, pOutLineColor, nOutLineWidth);
	}

	/// <summary>
	/// 简单符号化
	/// </summary>
	/// <param name="pFeatureLayer">要素图层</param>
	/// <param name="FillStyle">填充样式</param>
	/// <param name="pFillColor">填充颜色</param>
	/// <param name="pOutLineColor">边线颜色</param>
	/// <param name="nOutLineWidth">边线宽度</param>
	/// <param name="sRenderLabel">符号化标注</param>
	/// <param name="sDescripition">符号化描述</param>
	public static void SimpleFillSymbol(IFeatureLayer pFeatureLayer, esriSimpleFillStyle FillStyle, IColor pFillColor, IColor pOutLineColor,
		int nOutLineWidth = 1, string sRenderLabel = "", string sDescripition = "")
	{
		ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass
		{
			Style = FillStyle
		};
		if (null != pFillColor)
		{
			pSimpleFillSymbol.Color = pFillColor;
		}


		ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass
		{
			Style = esriSimpleLineStyle.esriSLSSolid,
			Color = pOutLineColor,
			Width = nOutLineWidth > 0 ? nOutLineWidth : 1
		};

		ISymbol pSymbol = pSimpleLineSymbol as ISymbol;
		//pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
		pSimpleFillSymbol.Outline = pSimpleLineSymbol;

		ISimpleRenderer simpleRender = new SimpleRendererClass
		{
			Symbol = pSimpleFillSymbol as ISymbol,
			Label = sRenderLabel,
			Description = sDescripition
		};
		if (pFeatureLayer is IGeoFeatureLayer pGeoFeatureLayer)
		{
			pGeoFeatureLayer.Renderer = simpleRender as IFeatureRenderer;
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值