ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Layouts Namespace / ElementInfo Class / Rotation Property
Example Version

Rotation Property (ElementInfo)
Gets and sets the default element rotation for elements. Use this property to override the default rotation
Syntax
public Nullable<double> Rotation {get; set;}
Remarks
Rotation is applied after any element anchor placement (if specified) has been applied.
Example
Create Point Element
//Must be on QueuedTask.Run(() => { ...

//Build geometry
Coordinate2D coord2D = new Coordinate2D(2.0, 10.0);

//Reference a point symbol in a style
StyleProjectItem stylePrjItm = Project.Current.GetItems<StyleProjectItem>()
         .FirstOrDefault(item => item.Name == "ArcGIS 2D");
SymbolStyleItem symStyleItm = stylePrjItm.SearchSymbols(
                      StyleItemType.PointSymbol, "City Hall")[0];
CIMPointSymbol pointSym = symStyleItm.Symbol as CIMPointSymbol;
pointSym.SetSize(50);

var elemInfo = new ElementInfo()
{
  CustomProperties = new List<CIMStringMap>() {
     new CIMStringMap() { Key = "Key1", Value = "Value1"},
     new CIMStringMap() { Key = "Key2", Value = "Value2"}
   },
  Anchor = Anchor.TopRightCorner,
  Rotation = 45.0
};

var graphic = GraphicFactory.Instance.CreateSimpleGraphic(
                              coord2D.ToMapPoint(), pointSym);

ElementFactory.Instance.CreateGraphicElement(
  container, graphic, "New Point", true, elemInfo);
Create Rectangle Element
//Must be on QueuedTask.Run(() => { ...

//Build geometry
Coordinate2D ll = new Coordinate2D(1.0, 4.75);
Coordinate2D ur = new Coordinate2D(3.0, 5.75);
Envelope env = EnvelopeBuilderEx.CreateEnvelope(ll, 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);

var ge = GraphicFactory.Instance.CreateSimpleGraphic(env, polySym);
var elemInfo = new ElementInfo()
{
  Anchor = Anchor.CenterPoint,
  Rotation = 45.0,
  CornerRounding = 5.0
};

ElementFactory.Instance.CreateGraphicElement(
  container, env, polySym, "New Rectangle", false, elemInfo);
Create Point Text Element 1
//Create a simple point text element and assign basic symbology and text settings.

//Construct on the worker thread
await QueuedTask.Run(() =>
{
  //Build 2D point geometry
  Coordinate2D coord2D = new Coordinate2D(3.5, 10);

  //Set symbology, create and add element to layout
  CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(
                ColorFactory.Instance.RedRGB, 32, "Arial", "Regular");
  string textString = "Point text";
  //At 2.x - GraphicElement ptTxtElm =
  //         LayoutElementFactory.Instance.CreatePointTextGraphicElement(
  //                           layout, coord2D, textString, sym);
  //ptTxtElm.SetName("New Point Text");
  //ptTxtElm.SetAnchor(Anchor.CenterPoint);
  //ptTxtElm.SetX(4.5);
  //ptTxtElm.SetY(9.5);
  //ptTxtElm.SetRotation(45);

  //use ElementInfo to set placement properties during create
  var elemInfo = new ElementInfo()
  {
    Anchor = Anchor.CenterPoint,
    Rotation = 45
  };
  var ptTxtElm = ElementFactory.Instance.CreateTextGraphicElement(
    container, TextType.PointText, coord2D.ToMapPoint(), sym, textString,
                       "New Point Text", true, elemInfo);

  //Change additional text properties
  ptTxtElm.SetX(4.5);
  ptTxtElm.SetY(9.5);
});
Create Line Arrow Element
//Must be on QueuedTask.Run(() => { ...

//Build 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);

var arrowInfo = new ArrowInfo()
{
  ArrowHeadKey = ArrowInfo.DefaultArrowHeadKeys[8],
  ArrowOnBothEnds = true,
  ArrowSizePoints = 24,
  LineWidthPoints = 12
};

//Create and add element to layout
GraphicElement lineElm = ElementFactory.Instance.CreateArrowGraphicElement(
  container, linePl, arrowInfo, "Arrow Line", true, 
                            new ElementInfo() { Rotation = 15.0 });
//lineElm.SetName("New Line");
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also