ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / GraphicsLayerExtensions Class / AddElement Method / AddElement(GraphicsLayer,CIMGraphic,String,Boolean,ElementInfo) Method
The graphic to be added. Cannot be null
An element name (optional)
True to set the element selected after the add (default is true) (optional)
Additional element properties or null (optional)
Example

In This Topic
    AddElement(GraphicsLayer,CIMGraphic,String,Boolean,ElementInfo) Method
    In This Topic
    Add a ArcGIS.Desktop.Layouts.GraphicElement based on the ArcGIS.Core.CIM.CIMGraphic. This method must be called on the MCT.Use QueuedTask.Run.
    Syntax
    Public Overloads Shared Function AddElement( _
       ByVal graphicsLayer As GraphicsLayer, _
       ByVal cimGraphic As CIMGraphic, _
       Optional ByVal elementName As String, _
       Optional ByVal select As Boolean, _
       Optional ByVal elementInfo As ElementInfo _
    ) As GraphicElement

    Parameters

    graphicsLayer
    cimGraphic
    The graphic to be added. Cannot be null
    elementName
    An element name (optional)
    select
    True to set the element selected after the add (default is true) (optional)
    elementInfo
    Additional element properties or null (optional)

    Return Value

    Exceptions
    ExceptionDescription
    This method or property must be called within the lambda passed to QueuedTask.Run.
    Value cannot be null: cimGraphic
    Map has reached maximum graphics count limit of 4000 elements. One or more elements cannot be created.
    Map has reached maximum graphics size limit of 10 MB. One or more elements cannot be created.
    Remarks
    A ArcGIS.Desktop.Layouts.GraphicElement is created that contains the cimGraphic. The geometry of the graphic cannot be empty or null. If the symbology is not set then a default symbology is applied.
    o ArcGIS.Core.CIM.CIMInkGraphic is not supported
    o ArcGIS.Core.CIM.CIMMultiPatchGraphic is not supported
    The map view displaying the graphics layer should be initialized.
    Example
    Translates a point in page coordinates to a point in map coordinates.
    {
      var pointSymbol = SymbolFactory.Instance.ConstructPointSymbol(ColorFactory.Instance.BlackRGB, 8);
      var graphicsLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<GraphicsLayer>().FirstOrDefault();
      //Note: Must be on QueuedTask.Run
    
      //Get a point in the center of the Map frame
      var mapFrameCenterPoint = mapFrame.GetBounds().CenterCoordinate;
      //Convert to MapPoint
      var pointInMapFrame = MapPointBuilderEx.CreateMapPoint(mapFrameCenterPoint);
    
      //Find the corresponding point in the MapView
      var pointOnMap = mapFrame.PageToMap(pointInMapFrame);
    
      //Create a point graphic on the MapView.
      var cimGraphicElement = new CIMPointGraphic
      {
        Location = pointOnMap,
        Symbol = pointSymbol.MakeSymbolReference()
      };
      graphicsLayer.AddElement(cimGraphicElement);
    }
    Point Graphic Element using CIMGraphic
    {
      // Note: must be called on the QueuedTask
      {
        //Place symbol in the center of the map
        var extent = MapView.Active.Extent;
        var location = extent.Center;
    
        //specify a symbol
        var pt_symbol = SymbolFactory.Instance.ConstructPointSymbol(
                              ColorFactory.Instance.GreenRGB);
    
        //create a CIMGraphic 
        var graphic = new CIMPointGraphic()
        {
          Symbol = pt_symbol.MakeSymbolReference(),
          Location = location //center of map
        };
        graphicsLayer.AddElement(graphic);
      }
    }
    Line Graphic Element using CIMGraphic
    {
      // Note: must be called on the QueuedTask
      {
        //On the QueuedTask
        //Place a line symbol using the extent's lower left and upper right corner.
        var extent = MapView.Active.Extent;
        //get the lower left corner of the extent
        var pointFromCoordinates = new Coordinate2D(extent.XMin, extent.YMin);
        //get the upper right corner of the extent
        var pointToCoordinates = new Coordinate2D(extent.XMax, extent.YMax);
        List<Coordinate2D> points = new List<Coordinate2D> { pointFromCoordinates, pointToCoordinates };
        //create the polyline
        var lineSegment = PolylineBuilderEx.CreatePolyline(points);
    
        //specify a symbol
        var line_symbol = SymbolFactory.Instance.ConstructLineSymbol(
                              ColorFactory.Instance.GreenRGB);
        //create a CIMGraphic 
        var graphic = new CIMLineGraphic()
        {
          Symbol = line_symbol.MakeSymbolReference(),
          Line = lineSegment,
        };
        graphicsLayer.AddElement(graphic);
      }
    }
    Polygon Graphic Element using CIMGraphic
    {
      // Note: must be called on the QueuedTask
      {
        //On the QueuedTask
        //Place a polygon symbol using the mapview extent geometry
        var extent = MapView.Active.Extent;
        //Contract the extent
        var polygonEnv = extent.Expand(-100000, -90000, false);
        //create a polygon using the envelope
        var polygon = PolygonBuilderEx.CreatePolygon(polygonEnv);
    
        //specify a symbol
        var poly_symbol = SymbolFactory.Instance.ConstructPolygonSymbol(
                              ColorFactory.Instance.GreenRGB);
    
        //create a CIMGraphic 
        var graphic = new CIMPolygonGraphic()
        {
          Symbol = poly_symbol.MakeSymbolReference(),
          Polygon = polygon,
        };
        graphicsLayer.AddElement(graphic);
      }
    }
    Multi-point Graphic Element using CIMGraphic
    {
      // Note: must be called on the QueuedTask
      {
        //Place a multipoint graphic using the mapview extent geometry
        var extent = MapView.Active.Extent;
        //Contract the extent
        var polygonEnv = extent.Expand(-100000, -90000, false);
        //create a polygon using the envelope
        var polygon = PolygonBuilderEx.CreatePolygon(polygonEnv);
        //Create MultipPoints from the polygon
        var multiPoints = MultipointBuilderEx.CreateMultipoint(polygon);
        //specify a symbol
        var point_symbol = SymbolFactory.Instance.ConstructPointSymbol(
                              ColorFactory.Instance.GreenRGB);
        //create a CIMGraphic 
        var graphic = new CIMMultipointGraphic
        {
          Symbol = point_symbol.MakeSymbolReference(),
          Multipoint = multiPoints
        };
        graphicsLayer.AddElement(graphic);
      }
    }
    Graphic Element using CIMSymbol
    {
      // Note: must be called on the QueuedTask
      {
        //Place symbol in the center of the map
        var extent = MapView.Active.Extent;
        var location = extent.Center;
    
        //specify a symbol
        var pt_symbol = SymbolFactory.Instance.ConstructPointSymbol(
                              ColorFactory.Instance.GreenRGB);
        graphicsLayer.AddElement(location, pt_symbol);
      }
    }
    Text Graphic Element
    {
      // Note: must be called on the QueuedTask
      {
        //Place symbol in the center of the map
        var extent = MapView.Active.Extent;
        var location = extent.Center;
    
        //specify a text symbol
        var text_symbol = SymbolFactory.Instance.ConstructTextSymbol
        (ColorFactory.Instance.BlackRGB, 8.5, "Corbel", "Regular");
    
        graphicsLayer.AddElement(location, text_symbol, "Text Example");
      }
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also