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).
| Parameter | Type | Description |
|---|---|---|
X1, Y1 | TFloat | Control point coordinates. |
X, Y | TFloat | Endpoint coordinates. |
Overload 2 ​
pascal
procedure ConicTo(const P1, P: TFloatPoint); overload; virtual;Appends a quadratic Bezier curve using control point P1 and endpoint P.
| Parameter | Type | Description |
|---|---|---|
P1 | TFloatPoint | Control point. |
P | TFloatPoint | Destination 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.
| Parameter | Type | Description |
|---|---|---|
X, Y | TFloat | Endpoint 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.
| Parameter | Type | Description |
|---|---|---|
P | TFloatPoint | Destination 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
P1and endpointP. - Smooth conic signatures (
ConicTo(P)) calculateP1automatically by reflecting the control point of the precedingConicTooperation acrossCurrentPoint. If the previous command was not a conic curve,P1defaults toCurrentPoint.
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;