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

In This Topic
    CubicBezierSegment Class
    In This Topic
    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 
    Public NotInheritable Class CubicBezierSegment 
       Inherits 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