ConstructPolygonSymbol(CIMColor) Method
Constructs a polygon symbol of specific color.
Parameters
- color
- ArcGIS.Core.CIM.CIMColor
Return Value
Create_polygon_env
//Create a polygon graphic using an envelope with simple line and fill styles.
//Construct on the worker thread
await QueuedTask.Run(() =>
{
//Build 2D envelope
Coordinate2D env_ll = new Coordinate2D(1.0, 4.75);
Coordinate2D env_ur = new Coordinate2D(3.0, 5.75);
//At 2.x - Envelope env = EnvelopeBuilder.CreateEnvelope(env_ll, env_ur);
Envelope env = EnvelopeBuilderEx.CreateEnvelope(env_ll, env_ur);
//Set symbolology, create and add element to layout
CIMStroke outline = SymbolFactory.Instance.ConstructStroke(
ColorFactory.Instance.BlueRGB, 2.0, SimpleLineStyle.DashDotDot);
CIMPolygonSymbol polySym = SymbolFactory.Instance.ConstructPolygonSymbol(
ColorFactory.Instance.RedRGB, SimpleFillStyle.ForwardDiagonal, outline);
//At 2.x - GraphicElement polyElm =
// LayoutElementFactory.Instance.CreatePolygonGraphicElement(layout, env, polySym);
// polyElm.SetName("New Polygon");
GraphicElement polyElm = ElementFactory.Instance.CreateGraphicElement(
layout, env, polySym, "New Polygon");
});
Create_circle
//Create a circle graphic element using a simple line and fill styles.
//Construct on the worker thread
await QueuedTask.Run(() =>
{
//Build geometry
Coordinate2D center = new Coordinate2D(2, 4);
//At 2.x - EllipticArcBuilder eabCir = new EllipticArcBuilder(center, 0.5, esriArcOrientation.esriArcClockwise);
var eabCir = new EllipticArcBuilderEx(center, 0.5, ArcOrientation.ArcClockwise);
EllipticArcSegment cir = eabCir.ToSegment();
//Set symbolology, create and add element to layout
CIMStroke outline = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.BlackRGB, 2.0, SimpleLineStyle.Dash);
CIMPolygonSymbol circleSym = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB, SimpleFillStyle.Solid, outline);
//At 2.x - GraphicElement cirElm = LayoutElementFactory.Instance.CreateCircleGraphicElement(layout, cir, circleSym);
// cirElm.SetName("New Circle");
var polyLine = PolylineBuilderEx.CreatePolyline(cir);
GraphicElement cirElm = ElementFactory.Instance.CreateGraphicElement(layout, polyLine, circleSym, "New Circle");
});
Create_ellipse
//Create an ellipse graphic with simple line and fill styles.
//Construct on the worker thread
await QueuedTask.Run(() =>
{
//Build geometry
Coordinate2D center = new Coordinate2D(2, 2.75);
//At 2.x - EllipticArcBuilder eabElp = new EllipticArcBuilder(center, 0, 1, 0.45, esriArcOrientation.esriArcClockwise);
var eabElp = new EllipticArcBuilderEx(center, 0, 1, 0.45, ArcOrientation.ArcClockwise);
EllipticArcSegment ellipse = eabElp.ToSegment();
//Set symbolology, create and add element to layout
CIMStroke outline = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.GreenRGB, 2.0, SimpleLineStyle.Dot);
CIMPolygonSymbol ellipseSym = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.GreyRGB, SimpleFillStyle.Vertical, outline);
//At 2.x - GraphicElement elpElm = LayoutElementFactory.Instance.CreateEllipseGraphicElement(layout, ellipse, ellipseSym);
// elpElm.SetName("New Ellipse");
var polyLine = PolylineBuilderEx.CreatePolyline(ellipse);
GraphicElement elpElm = ElementFactory.Instance.CreateGraphicElement(layout, polyLine, ellipseSym, "New Ellipse");
});
Snippet Procedural Symbol
/// <summary>
/// Create a procedural symbol that can be applied to a polygon building footprint layer
/// 
/// </summary>
/// <remarks>Note: The rule package used in this method can be obtained from the Sample Data included in the arcgis-pro-sdk-community-samples repository.</remarks>
private static readonly string _rulePkgPath = @"C:\Data\RulePackages\Venice_2014.rpk";
public static Task<CIMPolygonSymbol> CreateProceduralPolygonSymbolAsync()
{
return QueuedTask.Run<CIMPolygonSymbol>(() =>
{
//Polygon symbol to hold the procedural layer
var myPolygonSymbol = SymbolFactory.Instance.ConstructPolygonSymbol();
//Array of layers to hold a procedural symbol layer
CIMSymbolLayer[] proceduralSymbolLyr =
{
new CIMProceduralSymbolLayer()
{
PrimitiveName = "Venice Rule package 2014",
RulePackage = _rulePkgPath,
RulePackageName = "Venice_2014",
}
};
myPolygonSymbol.SymbolLayers = proceduralSymbolLyr;
return myPolygonSymbol;
});
}
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.