ArcGIS Pro 3.3 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMTextGraphicBase Class / Shape Property

In This Topic
    Shape Property (CIMTextGraphicBase)
    In This Topic
    Gets or sets the geometry of the text graphic.
    public Geometry Shape {get; set;}
    Public Property Shape As Geometry
    Rotate or Move the Annotation
          await QueuedTask.Run(() =>
              //Don't use 'Shape'....Shape is the bounding box of the annotation text. This is NOT what you want...
              //var insp = new Inspector();
              //insp.Load(annoLayer, oid);
              //var shape = insp["SHAPE"] as Polygon;
              //...wrong shape...
              //Instead, we must get the TextGraphic from the anno feature.
              //The TextGraphic shape will be the anno baseline...
              //At 2.1 the only way to retrieve this textLine is to obtain the TextGraphic from the AnnotationFeature
              QueryFilter qf = new QueryFilter()
                  WhereClause = "OBJECTID = 1"
      //annoLayer is ~your~ Annotation layer
      using (var rowCursor = annoLayer.Search(qf))
        if (rowCursor.MoveNext())
          using (var annoFeature = rowCursor.Current as 
            var graphic = annoFeature.GetGraphic();
            var textGraphic = graphic as CIMTextGraphic;
            var textLine = textGraphic.Shape as Polyline;
            // rotate the shape 90 degrees
            var origin = GeometryEngine.Instance.Centroid(textLine);
            Geometry rotatedPolyline = GeometryEngine.Instance.Rotate(textLine, origin, System.Math.PI / 2);
            //Move the line 5 "units" in the x and y direction
            //GeometryEngine.Instance.Move(textLine, 5, 5);
            EditOperation op = new EditOperation();
            op.Name = "Change annotation angle";
            op.Modify(annoLayer, oid, rotatedPolyline);

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also