ArcGIS Pro 3.2 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 Version

AddElement(GraphicsLayer,CIMGraphic,String,Boolean,ElementInfo) Method
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

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
Point Graphic Element using CIMGraphic
    var graphicsLayer = MapView.Active.Map.GetLayersAsFlattenedList()
.OfType<ArcGIS.Desktop.Mapping.GraphicsLayer>().FirstOrDefault();
    if (graphicsLayer == null)
      return;
    QueuedTask.Run(() =>
    {
      //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
//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
//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
//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
    var graphicsLayer = MapView.Active.Map.GetLayersAsFlattenedList()
.OfType<ArcGIS.Desktop.Mapping.GraphicsLayer>().FirstOrDefault();
    if (graphicsLayer == null)
      return;
    QueuedTask.Run(() =>
    {
      //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);
    });
Translates a point in page coordinates to a point in map coordinates.
//On the QueuedTask
var layout = Project.Current.GetItems<LayoutProjectItem>().FirstOrDefault().GetLayout();
var mapFrame = layout.FindElement("New Map Frame") as MapFrame;

//Get a point in the center of the Map frame
var mapFrameCenterPoint = mapFrame.GetBounds().CenterCoordinate;
//Convert to MapPoint
//At 2.x - var pointInMapFrame = MapPointBuilder.CreateMapPoint(mapFrameCenterPoint);
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);
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also