
public class CIMLineSymbol : CIMMultiLayerSymbol, System.ComponentModel.INotifyPropertyChanged, System.Xml.Serialization.IXmlSerializable
Public Class CIMLineSymbol Inherits CIMMultiLayerSymbol Implements System.ComponentModel.INotifyPropertyChanged, System.Xml.Serialization.IXmlSerializable
//Must be on QueuedTask.Run(() => { ... //Build geometry List<Coordinate2D> plCoords = new List<Coordinate2D>(); plCoords.Add(new Coordinate2D(1.5, 10.5)); plCoords.Add(new Coordinate2D(1.25, 9.5)); plCoords.Add(new Coordinate2D(1, 10.5)); plCoords.Add(new Coordinate2D(0.75, 9.5)); plCoords.Add(new Coordinate2D(0.5, 10.5)); plCoords.Add(new Coordinate2D(0.5, 1)); plCoords.Add(new Coordinate2D(0.75, 2)); plCoords.Add(new Coordinate2D(1, 1)); Polyline linePl = PolylineBuilderEx.CreatePolyline(plCoords); //Set symbolology, create and add element to layout CIMLineSymbol lineSym = SymbolFactory.Instance.ConstructLineSymbol( ColorFactory.Instance.BlackRGB, 2.0, SimpleLineStyle.Solid); //var graphic = GraphicFactory.Instance.CreateShapeGraphic(linePl, lineSym); var ge = ElementFactory.Instance.CreateGraphicElement( container, linePl, lineSym, "New Freehand");
//Create a simple 2D line graphic and apply an existing line //style item as the symbology. //Construct on the worker thread await 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)); //At 2.x - Polyline linePl = PolylineBuilder.CreatePolyline(plCoords); 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 symbolology, create and add element to layout //An alternative simple symbol is also commented out below. //This would elminate the four optional lines of code above that //reference a style. // //CIMLineSymbol lineSym = SymbolFactory.Instance.ConstructLineSymbol( // ColorFactory.Instance.BlueRGB, 4.0, SimpleLineStyle.Solid); //At 2.x - GraphicElement lineElm = // LayoutElementFactory.Instance.CreateLineGraphicElement( // layout, linePl, lineSym); GraphicElement lineElm = ElementFactory.Instance.CreateGraphicElement( container, linePl, lineSym); lineElm.SetName("New Line"); });
CIMLineSymbol lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlueRGB, 4.0, SimpleLineStyle.Solid);
CIMStroke stroke = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.BlackRGB, 2.0); CIMLineSymbol lineSymbolFromStroke = SymbolFactory.Instance.ConstructLineSymbol(stroke);
//These methods must be called within the lambda passed to QueuedTask.Run var lineStrokeRed = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.RedRGB, 4.0); var markerCircle = SymbolFactory.Instance.ConstructMarker(ColorFactory.Instance.RedRGB, 12, SimpleMarkerStyle.Circle); markerCircle.MarkerPlacement = new CIMMarkerPlacementOnVertices() { AngleToLine = true, PlaceOnEndPoints = true, Offset = 0 }; var lineSymbolWithCircles = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[2] { markerCircle, lineStrokeRed } };
//These methods must be called within the lambda passed to QueuedTask.Run var lineStrokeRed = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.RedRGB, 4.0); var markerCircle = SymbolFactory.Instance.ConstructMarker(ColorFactory.Instance.RedRGB, 12, SimpleMarkerStyle.Circle); markerCircle.MarkerPlacement = new CIMMarkerPlacementOnVertices() { AngleToLine = true, PlaceOnEndPoints = true, Offset = 0 }; var lineSymbolWithCircles = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[2] { markerCircle, lineStrokeRed } };
//These methods must be called within the lambda passed to QueuedTask.Run var markerTriangle = SymbolFactory.Instance.ConstructMarker(ColorFactory.Instance.RedRGB, 12, SimpleMarkerStyle.Triangle); markerTriangle.Rotation = -90; // or -90 markerTriangle.MarkerPlacement = new CIMMarkerPlacementOnLine() { AngleToLine = true, RelativeTo = PlacementOnLineRelativeTo.LineEnd }; var lineSymbolWithArrow = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[2] { markerTriangle, SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.RedRGB, 2) } };
//These methods must be called within the lambda passed to QueuedTask.Run var markerTriangle = SymbolFactory.Instance.ConstructMarker(ColorFactory.Instance.RedRGB, 12, SimpleMarkerStyle.Triangle); markerTriangle.Rotation = -90; // or -90 markerTriangle.MarkerPlacement = new CIMMarkerPlacementOnLine() { AngleToLine = true, RelativeTo = PlacementOnLineRelativeTo.LineEnd }; var lineSymbolWithArrow = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[2] { markerTriangle, SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.RedRGB, 2) } };
System.Object
ArcGIS.Core.CIM.CIMObject
ArcGIS.Core.CIM.CIMSymbol
ArcGIS.Core.CIM.CIMMultiLayerSymbol
ArcGIS.Core.CIM.CIMLineSymbol
Target Platforms: Windows 11, Windows 10, Windows 8.1