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

CubicBezierSegment Class
Represents a third degree cubic Bezier curve for use in a Multipart geometry. To create a cubic bezier segment use the CubicBezierBuilderEx object.
Object Model
CubicBezierSegment ClassCoordinate2D StructureCoordinate2D StructureCoordinate2D StructureMapPoint ClassEnvelope ClassSpatialReference ClassCoordinate2D StructureMapPoint Class
Syntax
public sealed class CubicBezierSegment : Segment 
Remarks
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

Example
Construct a Cubic Bezier - from Coordinates
// Use a builderEx convenience method or a builderEx constructor.

MapPoint startPt = MapPointBuilderEx.CreateMapPoint(1.0, 1.0, 3.0);
MapPoint endPt = MapPointBuilderEx.CreateMapPoint(2.0, 2.0, 3.0);

Coordinate2D ctrl1Pt = new Coordinate2D(1.0, 2.0);
Coordinate2D ctrl2Pt = new Coordinate2D(2.0, 1.0);

// BuilderEx convenience methods don't need to run on the MCT
CubicBezierSegment bezier = CubicBezierBuilderEx.CreateCubicBezierSegment(startPt, ctrl1Pt, ctrl2Pt, endPt, SpatialReferences.WGS84);

// without a SR
bezier = CubicBezierBuilderEx.CreateCubicBezierSegment(startPt, ctrl1Pt, ctrl2Pt, endPt);


// builderEx constructors don't need to run on the MCT
CubicBezierBuilderEx cbbEx = new CubicBezierBuilderEx(startPt, ctrl1Pt, ctrl2Pt, endPt);
bezier = cbbEx.ToSegment() as CubicBezierSegment;

// another alternative
cbbEx = new CubicBezierBuilderEx(startPt, ctrl1Pt.ToMapPoint(), ctrl2Pt.ToMapPoint(), endPt);
bezier = cbbEx.ToSegment() as CubicBezierSegment;

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.Segment
      ArcGIS.Core.Geometry.CubicBezierSegment

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also