ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / SymbolFactory Class / ConstructTextSymbol Method / ConstructTextSymbol(CIMColor) Method
ArcGIS.Core.CIM.CIMColor
Example Version

ConstructTextSymbol(CIMColor) Method
Constructs a default text symbol given its color. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
public CIMTextSymbol ConstructTextSymbol( 
   CIMColor color
)

Parameters

color
ArcGIS.Core.CIM.CIMColor

Return Value

Exceptions
ExceptionDescription
This method must be called within the lambda passed to QueuedTask.Run
Example
Create_CurveText
//Create curve text with basic text properties.

//Construct on the worker thread
await QueuedTask.Run(() =>
{
  //Build geometry
  Coordinate2D pt1 = new Coordinate2D(3.6, 7.5);
  Coordinate2D pt2 = new Coordinate2D(4.26, 8);
  Coordinate2D pt3 = new Coordinate2D(4.93, 7.1);
  Coordinate2D pt4 = new Coordinate2D(5.6, 7.5);
  //At 2.x - CubicBezierBuilder bez = new CubicBezierBuilder(pt1, pt2, pt3, pt4);
  var bez = new CubicBezierBuilderEx(pt1, pt2, pt3, pt4);
  CubicBezierSegment bezSeg = bez.ToSegment();
  //At 2.x - Polyline bezPl = PolylineBuilder.CreatePolyline(bezSeg);
  Polyline bezPl = PolylineBuilderEx.CreatePolyline(bezSeg);

  //Set symbolology, create and add element to layout
  CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 24, "Comic Sans MS", "Regular");
  //At 2.x - GraphicElement bezTxtElm = LayoutElementFactory.Instance.CreateCurvedTextGraphicElement(layout, bezPl, "Curved Text", sym);
  //         bezTxtElm.SetName("New Splinned Text");
  GraphicElement bezTxtElm = ElementFactory.Instance.CreateTextGraphicElement(
                                layout, TextType.SplinedText, bezPl, sym, "Curved Text", "New Splinned Text");
});
Create_PolygonText
//Create polygon paragraph text with basic text properties.

//Construct on the worker thread
await QueuedTask.Run(() =>
{
  //Build geometry
  List<Coordinate2D> plyCoords = new List<Coordinate2D>();
  plyCoords.Add(new Coordinate2D(3.5, 7));
  plyCoords.Add(new Coordinate2D(4.5, 7));
  plyCoords.Add(new Coordinate2D(4.5, 6.7));
  plyCoords.Add(new Coordinate2D(5.5, 6.7));
  plyCoords.Add(new Coordinate2D(5.5, 6.1));
  plyCoords.Add(new Coordinate2D(3.5, 6.1));
  //At 2.x - Polygon poly = PolygonBuilder.CreatePolygon(plyCoords);
  Polygon poly = PolygonBuilderEx.CreatePolygon(plyCoords);

  //Set symbolology, create and add element to layout
  CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.GreyRGB, 10, "Arial", "Regular");
  string text = "Some Text String that is really long and is <BOL>forced to wrap to other lines</BOL> so that we can see the effects." as String;
  //At 2.x - GraphicElement polyTxtElm = LayoutElementFactory.Instance.CreatePolygonParagraphGraphicElement(layout, poly, text, sym);
  //         polyTxtElm.SetName("New Polygon Text"); 
  GraphicElement polyTxtElm = ElementFactory.Instance.CreateTextGraphicElement(
                                layout, TextType.RectangleParagraph, poly, sym, text, "New Polygon Text");

  //(Optionally) Modify paragraph border 
  CIMGraphic polyTxtGra = polyTxtElm.GetGraphic();
  CIMParagraphTextGraphic cimPolyTxtGra = polyTxtGra as CIMParagraphTextGraphic;
  cimPolyTxtGra.Frame.BorderSymbol = new CIMSymbolReference();
  cimPolyTxtGra.Frame.BorderSymbol.Symbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.GreyRGB, 1.0, SimpleLineStyle.Solid);
  polyTxtElm.SetGraphic(polyTxtGra);
});
Create_CircleText
//Create circle paragraph text with basic text settings and optionally a modified border.

//Construct on the worker thread
await QueuedTask.Run(() =>
{
  //Build geometry
  Coordinate2D center = new Coordinate2D(4.5, 4);
  //At 2.x - EllipticArcBuilder eabCir = new EllipticArcBuilder(center, 0.5, esriArcOrientation.esriArcClockwise);
  var eabCir = new EllipticArcBuilderEx(center, 0.5, ArcOrientation.ArcClockwise);
  EllipticArcSegment cir = eabCir.ToSegment();
  var polyCir = PolygonBuilderEx.CreatePolygon(
                  PolylineBuilderEx.CreatePolyline(cir));

  //Set symbolology, create and add element to layout
  CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.GreenRGB, 10, "Arial", "Regular");
  string text = "Circle, circle, circle, circle, circle, circle, circle, circle, circle, circle, circle";
  //At 2.x - GraphicElement cirTxtElm = LayoutElementFactory.Instance.CreateCircleParagraphGraphicElement(layout, cir, text, sym);
  //         cirTxtElm.SetName("New Circle Text");
  GraphicElement cirTxtElm = ElementFactory.Instance.CreateTextGraphicElement(
                                layout, TextType.CircleParagraph, polyCir, sym, text, "New Circle Text");

  //(Optionally) Modify paragraph border 
  CIMGraphic cirTxtGra = cirTxtElm.GetGraphic();
  CIMParagraphTextGraphic cimCirTxtGra = cirTxtGra as CIMParagraphTextGraphic;
  cimCirTxtGra.Frame.BorderSymbol = new CIMSymbolReference();
  cimCirTxtGra.Frame.BorderSymbol.Symbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.GreyRGB, 1.0, SimpleLineStyle.Solid);
  cirTxtElm.SetGraphic(cirTxtGra);
});
Create_EllipseText
//Create ellipse paragraph text with basic text settings and optionally a modified border.

//Construct on the worker thread
await QueuedTask.Run(() =>
{
  //Build geometry
  Coordinate2D center = new Coordinate2D(4.5, 2.75);
  //At 2.x - EllipticArcBuilder eabElp = new EllipticArcBuilder(center, 0, 1, 0.45, esriArcOrientation.esriArcClockwise);
  var eabElp = new EllipticArcBuilderEx(center, 0, 1, 0.45, ArcOrientation.ArcClockwise);
  EllipticArcSegment ellipse = eabElp.ToSegment();
  var polyElp = PolygonBuilderEx.CreatePolygon(
                  PolylineBuilderEx.CreatePolyline(ellipse));

  //Set symbolology, create and add element to layout
  CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlueRGB, 10, "Arial", "Regular");
  string text = "Ellipse, ellipse, ellipse, ellipse, ellipse, ellipse, ellipse, ellipse, ellipse, ellipse, ellipse, ellipse";
  //At 2.x - GraphicElement elpTxtElm = LayoutElementFactory.Instance.CreateEllipseParagraphGraphicElement(layout, ellipse, text, sym);
  //         elpTxtElm.SetName("New Ellipse Text");
  GraphicElement elpTxtElm = ElementFactory.Instance.CreateTextGraphicElement(
                                layout, TextType.EllipseParagraph, polyElp, sym, text, "New Ellipse Text");

  //(Optionally) Modify paragraph border 
  CIMGraphic elpTxtGra = elpTxtElm.GetGraphic();
  CIMParagraphTextGraphic cimElpTxtGra = elpTxtGra as CIMParagraphTextGraphic;
  cimElpTxtGra.Frame.BorderSymbol = new CIMSymbolReference();
  cimElpTxtGra.Frame.BorderSymbol.Symbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.GreyRGB, 1.0, SimpleLineStyle.Solid);
  elpTxtElm.SetGraphic(elpTxtGra);
});
Create Point Text Element 2
//Must be on QueuedTask.Run(() => { ...

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

var elemInfo = new ElementInfo() { Anchor = Anchor.BottomLeftCorner };
GraphicElement ptTxtElm = ElementFactory.Instance.CreateTextGraphicElement(
  container, TextType.PointText, coord2D.ToMapPoint(), sym, textString,
  "New Point Text", true, elemInfo);
Create Polygon Paragraph Text Element
//Must be on QueuedTask.Run(() => { ...

//Build geometry
List<Coordinate2D> plyCoords = new List<Coordinate2D>();
plyCoords.Add(new Coordinate2D(3.5, 7));
plyCoords.Add(new Coordinate2D(4.5, 7));
plyCoords.Add(new Coordinate2D(4.5, 6.7));
plyCoords.Add(new Coordinate2D(5.5, 6.7));
plyCoords.Add(new Coordinate2D(5.5, 6.1));
plyCoords.Add(new Coordinate2D(3.5, 6.1));
Polygon poly = PolygonBuilderEx.CreatePolygon(plyCoords);

//Set symbology, create and add element to layout
CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(
     ColorFactory.Instance.GreyRGB, 10, "Arial", "Regular");
string text = "Some text string that is really long and " +
              "<BOL>wraps to other lines</BOL>" +
              " so that we can see the effects.";

var ge = ElementFactory.Instance.CreateTextGraphicElement(
  container, TextType.PolygonParagraph, poly, sym, text,
        "New Polygon Text", true);
Create Rectangle Paragraph Text Element 2
//Must be on QueuedTask.Run(() => { ...

//Build geometry
Coordinate2D ll = new Coordinate2D(3.5, 4.75);
Coordinate2D ur = new Coordinate2D(5.5, 5.75);
Envelope env = EnvelopeBuilderEx.CreateEnvelope(ll, ur);

//Set symbology, create and add element to layout
CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(
           ColorFactory.Instance.WhiteRGB, 10, "Arial", "Regular");
string text = "Some text string that is really long and " +
              "<BOL>wraps to other lines</BOL>" +
              " so that we can see the effects.";

//(Optionally) Modify border and background with 50% transparency 
//CIMGraphic recTxtGra = recTxtElm.Graphic;
//CIMParagraphTextGraphic cimRecTxtGra = recTxtGra as CIMParagraphTextGraphic;
//CIMSymbolReference cimRecTxtBorder = cimRecTxtGra.Frame.BorderSymbol;
//
//CIMLineSymbol lineSym = SymbolFactory.Instance.ConstructLineSymbol(
//                    ColorFactory.Instance.BlackRGB, 1.0, SimpleLineStyle.Solid);
//cimRecTxtBorder.Symbol = lineSym;
//
//CIMSymbolReference cimRecTxtBkgrd = cimRecTxtGra.Frame.BackgroundSymbol;
//CIMPolygonSymbol polySym = SymbolFactory.Instance.ConstructPolygonSymbol(
//                            ColorFactory.Instance.GreyRGB, SimpleFillStyle.Solid);
//
//CIMColor symCol = polySym.GetColor(IElementContainer container);
//symCol.SetAlphaValue(50);
//cimRecTxtBkgrd.Symbol = polySym;
//recTxtElm.SetGraphic(recTxtGra);

var ge = ElementFactory.Instance.CreateTextGraphicElement(container,
            TextType.RectangleParagraph, env, sym, text, "New Rectangle Text");
Create Circle Text Element
//Must be on QueuedTask.Run(() => { ...

//Build geometry
Coordinate2D center = new Coordinate2D(4.5, 4);
var eabCir = new EllipticArcBuilderEx(center, 0.5, ArcOrientation.ArcClockwise);
var cir = eabCir.ToSegment();

var poly = PolygonBuilderEx.CreatePolygon(
  PolylineBuilderEx.CreatePolyline(cir, AttributeFlags.AllAttributes));

//Set symbology, create and add element to layout
CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(
                ColorFactory.Instance.GreenRGB, 10, "Arial", "Regular");
string text = "Circle, circle, circle";

GraphicElement cirTxtElm = ElementFactory.Instance.CreateTextGraphicElement(
  container, TextType.CircleParagraph, poly, sym, text, "New Circle Text", false);
Create Bezier Text Element
//Must be on QueuedTask.Run(() => { ...

//Build geometry
Coordinate2D pt1 = new Coordinate2D(3.5, 7.5);
Coordinate2D pt2 = new Coordinate2D(4.16, 8);
Coordinate2D pt3 = new Coordinate2D(4.83, 7.1);
Coordinate2D pt4 = new Coordinate2D(5.5, 7.5);
var bez = new CubicBezierBuilderEx(pt1, pt2, pt3, pt4);
var bezSeg = bez.ToSegment();
Polyline bezPl = PolylineBuilderEx.CreatePolyline(bezSeg, AttributeFlags.AllAttributes);

//Set symbology, create and add element to layout
CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(
  ColorFactory.Instance.BlackRGB, 24, "Comic Sans MS", "Regular");

var ge = ElementFactory.Instance.CreateTextGraphicElement(
  container, TextType.SplinedText, bezPl, sym, "this is the bezier text",
        "New Bezier Text", true, new ElementInfo() { Anchor = Anchor.CenterPoint });
Create Ellipse Text Element
//Must be on QueuedTask.Run(() => { ...

//Build geometry
Coordinate2D center = new Coordinate2D(4.5, 2.75);
var eabElp = new EllipticArcBuilderEx(center, 0, 1, 0.45, ArcOrientation.ArcClockwise);
var ellipse = eabElp.ToSegment();

var poly = PolygonBuilderEx.CreatePolygon(
  PolylineBuilderEx.CreatePolyline(ellipse, AttributeFlags.AllAttributes));

//Set symbology, create and add element to layout
CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(
                      ColorFactory.Instance.BlueRGB, 10, "Arial", "Regular");
string text = "Ellipse, ellipse, ellipse";

GraphicElement ge = ElementFactory.Instance.CreateTextGraphicElement(
  container, TextType.PolygonParagraph, poly, sym, text, "New Ellipse Text", false);
Construct a Text Symbol With Options
QueuedTask.Run(() =>
{
  //using the default font
  var textSym1 = SymbolFactory.Instance.ConstructTextSymbol();
  var textSym2 = SymbolFactory.Instance.ConstructTextSymbol(
                     ColorFactory.Instance.BlueRGB, 14);

  //using a specific font
  var textSym3 = SymbolFactory.Instance.ConstructTextSymbol("Arial");
  var textSym4 = SymbolFactory.Instance.ConstructTextSymbol(
                    "Arial", "Narrow Bold");

  //or query available fonts to ensure the font is there
  var all_fonts = SymbolFactory.Instance.GetAvailableFonts();
  var font = all_fonts.FirstOrDefault(f => f.fontName == "Arial");
  if (!string.IsNullOrEmpty(font.fontName))
  {
    var textSym5 = SymbolFactory.Instance.ConstructTextSymbol(font.fontName);
    //or with a font+style
    var textSym6 = SymbolFactory.Instance.ConstructTextSymbol(
                                    font.fontName, font.fontStyles.First());
  }

  //overloads - font + color and size, etc
  var textSym7 = SymbolFactory.Instance.ConstructTextSymbol(
                  ColorFactory.Instance.BlueRGB, 14, "Times New Roman", "Italic");

  //custom symbol - black stroke, red fill
  var poly_symbol = SymbolFactory.Instance.ConstructPolygonSymbol(
    SymbolFactory.Instance.ConstructSolidFill(ColorFactory.Instance.RedRGB),
    SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.BlackRGB, 1));
  var textSym8 = SymbolFactory.Instance.ConstructTextSymbol(
          poly_symbol, 14, "Georgia", "Bold");

});

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also