Skip to content
Member Filters
Show Inherited
Show Protected
Show abstract
GR32_Paths🞂TFlattenedPath🞂ConicToMethod
Inherited from:TCustomPath.ConicTo

TFlattenedPath.ConicTo

Appends a quadratic (conic) Bezier curve segment to the vector path.

Declarations ​

pascal
procedure ConicTo(const X1, Y1, X, Y: TFloat); overload;
procedure ConicTo(const P1, P: TFloatPoint); overload; virtual;
procedure ConicTo(const X, Y: TFloat); overload;
procedure ConicTo(const P: TFloatPoint); overload; virtual;
Overload Details

Overload 1 ​

pascal
procedure ConicTo(const X1, Y1, X, Y: TFloat); overload;

Appends a quadratic Bezier curve using control point (X1, Y1) to endpoint (X, Y).

ParameterTypeDescription
X1, Y1TFloatControl point coordinates.
X, YTFloatEndpoint coordinates.

Overload 2 ​

pascal
procedure ConicTo(const P1, P: TFloatPoint); overload; virtual;

Appends a quadratic Bezier curve using control point P1 and endpoint P.

ParameterTypeDescription
P1TFloatPointControl point.
PTFloatPointDestination endpoint.

Overload 3 ​

pascal
procedure ConicTo(const X, Y: TFloat); overload;

Appends a smooth quadratic Bezier curve, automatically deriving the control point from the previous conic control point.

ParameterTypeDescription
X, YTFloatEndpoint coordinates.

Overload 4 ​

pascal
procedure ConicTo(const P: TFloatPoint); overload; virtual;

Appends a smooth quadratic Bezier curve to point P, automatically reflecting the previous control point.

ParameterTypeDescription
PTFloatPointDestination endpoint.

Description ​

ConicTo appends a quadratic (conic) Bezier curve segment extending from CurrentPoint to endpoint P (or X, Y).

Quadratic Bezier curves use a single control point P1:

  • Explicit signatures accept control point P1 and endpoint P.
  • Smooth conic signatures (ConicTo(P)) calculate P1 automatically by reflecting the control point of the preceding ConicTo operation across CurrentPoint. If the previous command was not a conic curve, P1 defaults to CurrentPoint.

Quadratic curve flattening tolerance is controlled by QBezierTolerance.

Example ​

pascal
var
  Canvas: TCanvas32;
begin
  Canvas := TCanvas32.Create(MyBitmap);
  try
    Canvas.MoveTo(20.0, 100.0);
    // Quadratic arc with control point at (100, 10)
    Canvas.ConicTo(100.0, 10.0, 180.0, 100.0);
    // Smooth continuation to (260, 100)
    Canvas.ConicTo(260.0, 100.0);
    Canvas.EndPath;
  finally
    Canvas.Free;
  end;
end;