ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Geometry Namespace / CubicBezierBuilderEx Class
Members Example Version

CubicBezierBuilderEx Class
A builder for creating a CubicBezierSegment whose methods can be called on any thread.
Object Model
CubicBezierBuilderEx ClassCoordinate2D StructureCoordinate2D StructureCubicBezierSegment ClassMapPoint ClassSpatialReference ClassMapPoint ClassCubicBezierSegment Class
Syntax
public sealed class CubicBezierBuilderEx : SegmentBuilderEx 
Remarks
Use the CubicBezierBuilderEx class to to create and/or modify a CubicBezierSegment shape. A CubicBezierSegment is based upon the parent Segment class. The Segment class is immutable which means that you can not change its shape once it is created. Hence, the CubicBezierBuilderEx provides the way to make changes when working with a CubicBezierSegment. Use the CubicBezierBuilderEx.ToSegment method to get the CubicBezierSegment from the builder.

A cubic Bezier curve is a non-linear segment defined by four control points. The Bezier curve starts at control point 0 (start point) and ends at control point 3 (end point). The start point and control point 1 define the tangent at the start point. Control point 2 and the end point define the tangent at the end point. The length of these tangent lines and position of the 4 control points determines the shape of the created Bezier curve.

Bezier Curves

The CubicBezierBuilderEx methods can be called on any thread.

Example
Create_BezierCurve
//Create a bezier curve element with a simple line style.

//Construct on the worker thread
await QueuedTask.Run(() =>
{
  //Build geometry
  Coordinate2D pt1 = new Coordinate2D(1, 7.5);
  Coordinate2D pt2 = new Coordinate2D(1.66, 8);
  Coordinate2D pt3 = new Coordinate2D(2.33, 7.1);
  Coordinate2D pt4 = new Coordinate2D(3, 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 symbology, create and add element to layout
  CIMLineSymbol lineSym = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.RedRGB, 4.0, SimpleLineStyle.DashDot);
  //At 2.x - GraphicElement bezElm = LayoutElementFactory.Instance.CreateLineGraphicElement(layout, bezPl, lineSym);
  //         bezElm.SetName("New Bezier Curve");
  GraphicElement bezElm = ElementFactory.Instance.CreateGraphicElement(layout, bezPl, lineSym, "New Bezier Curve");
});
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");
});
Inheritance Hierarchy

System.Object
   ArcGIS.Core.Geometry.SegmentBuilderEx
      ArcGIS.Core.Geometry.CubicBezierBuilderEx

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also