

Public Class SymbolStyleItem Inherits StyleItem Implements System.ComponentModel.INotifyPropertyChanged
public class SymbolStyleItem : StyleItem, System.ComponentModel.INotifyPropertyChanged
{
//Create a simple 2D point graphic and apply an existing point style item as the symbology.
//Note: Must be on QueuedTask.Run
//Build 2D point geometry
Coordinate2D coord2D = new Coordinate2D(2.0, 10.0);
//(optionally) Reference a point symbol in a style
StyleProjectItem ptStylePrjItm = Project.Current.GetItems<StyleProjectItem>()
.FirstOrDefault(item => item.Name == "ArcGIS 2D");
SymbolStyleItem ptSymStyleItm = ptStylePrjItm.SearchSymbols(
StyleItemType.PointSymbol, "City Hall")[0];
CIMPointSymbol pointSym = ptSymStyleItm.Symbol as CIMPointSymbol;
pointSym.SetSize(50);
//Set symbology, create and add element to layout
//An alternative simple symbol is also commented out below.
//This would eliminate the four optional lines of code above that
//reference a style.
//CIMPointSymbol pointSym = SymbolFactory.Instance.ConstructPointSymbol(
// ColorFactory.Instance.RedRGB, 25.0, SimpleMarkerStyle.Star);
GraphicElement ptElm = ElementFactory.Instance.CreateGraphicElement(
layout, coord2D.ToMapPoint(), pointSym);
ptElm.SetName("New Point");
}
{
//Create a simple 2D line graphic and apply an existing line
//style item as the symbology.
//Note: Must be on QueuedTask.Run
//Build 2d line geometry
List<Coordinate2D> plCoords = new List<Coordinate2D>();
plCoords.Add(new Coordinate2D(1, 8.5));
plCoords.Add(new Coordinate2D(1.66, 9));
plCoords.Add(new Coordinate2D(2.33, 8.1));
plCoords.Add(new Coordinate2D(3, 8.5));
Polyline linePl = PolylineBuilderEx.CreatePolyline(plCoords);
//(optionally) Reference a line symbol in a style
StyleProjectItem lnStylePrjItm = Project.Current.GetItems<StyleProjectItem>()
.FirstOrDefault(item => item.Name == "ArcGIS 2D");
SymbolStyleItem lnSymStyleItm = lnStylePrjItm.SearchSymbols(
StyleItemType.LineSymbol, "Line with 2 Markers")[0];
CIMLineSymbol lineSym = lnSymStyleItm.Symbol as CIMLineSymbol;
lineSym.SetSize(20);
//Set symbology, create and add element to layout
//An alternative simple symbol is also commented out below.
//This would eliminate the four optional lines of code above that
//reference a style.
//
//CIMLineSymbol lineSym = SymbolFactory.Instance.ConstructLineSymbol(
// ColorFactory.Instance.BlueRGB, 4.0, SimpleLineStyle.Solid);
GraphicElement lineElm = ElementFactory.Instance.CreateGraphicElement(
layout, linePl, lineSym);
lineElm.SetName("New Line");
}
{
//Create a simple 2D rectangle graphic and apply simple fill and
//outline symbols.
//Note: Must be on QueuedTask.Run
//Build 2D envelope geometry
Coordinate2D rec_ll = new Coordinate2D(1.0, 4.75);
Coordinate2D rec_ur = new Coordinate2D(3.0, 5.75);
Envelope rec_env = EnvelopeBuilderEx.CreateEnvelope(rec_ll, rec_ur);
//Set symbology, create and add element to layout
CIMStroke outline = SymbolFactory.Instance.ConstructStroke(
ColorFactory.Instance.BlackRGB, 5.0, SimpleLineStyle.Solid);
CIMPolygonSymbol polySym = SymbolFactory.Instance.ConstructPolygonSymbol(
ColorFactory.Instance.GreenRGB, SimpleFillStyle.DiagonalCross, outline);
GraphicElement recElm = ElementFactory.Instance.CreateGraphicElement(
layout, rec_env, polySym, "New Rectangle");
//Or use Predefined shape
GraphicElement recElm2 = ElementFactory.Instance.CreatePredefinedShapeGraphicElement(
layout, PredefinedShape.Rectangle, rec_env, polySym,
"New Rectangle2");
}
{
//Search for a specific point symbol in style
//Note: styleProjectItem was created above in the variable initialization section
//Note: Needs QueuedTask to run
string key = "Circle 1_Shapes_3";
SymbolStyleItem item = (SymbolStyleItem)styleProjectItem.LookupItem(StyleItemType.PointSymbol, key);
}
{
//Search for point symbols
//Note: styleProjectItem was created above in the variable initialization section
//Note: Needs QueuedTask to run
//Search for point symbols
styleProjectItem.SearchSymbols(StyleItemType.PointSymbol, "searchString");
}
{
//Note: styleProjectItem was created above in the variable initialization section
//Note: Needs QueuedTask to run
//Search for line symbols
styleProjectItem.SearchSymbols(StyleItemType.LineSymbol, "searchString");
}
{
//Note: styleProjectItem was created above in the variable initialization section
//Note: Needs QueuedTask to run
//Search for polygon symbols
styleProjectItem.SearchSymbols(StyleItemType.PolygonSymbol, "searchString");
}
System.Object
ArcGIS.Desktop.Framework.Contracts.PropertyChangedBase
ArcGIS.Desktop.Mapping.StyleItem
ArcGIS.Desktop.Mapping.SymbolStyleItem
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)