|
通过一组控制点绘制连续三次贝塞尔曲线(GDI PolyBezier 布局,v2.213.0)
Delphi 语法:
procedure PolyBezier ( const Points: array of THPDFCurrPoint );
C++ 语法:
void __fastcall PolyBezier ( const THPDFCurrPoint* Points, const int Points_High );
说明
PolyBezier 采用与 GDI PolyBezier 相同的控制点布局:Points[0] 为样条起点,此后每三个点 (C1, C2, P1) 定义一段三次贝塞尔曲线,内部通过 CurveToC 实现。数组至少需要 4 个元素,且 (Count - 1) mod 3 = 0,否则抛出诊断异常。绘制后调用 Stroke 渲染开放路径,或先调用 ClosePath 再填充
参数
| 名前 | 说明 |
Points | 贝塞尔控制点数组;Points[0] 为起点,后续每三点定义一段曲线(C1, C2, 终点);数量必须满足 4 + 3n(n ≥ 0) |
代码示例
// 绘制两段连续三次贝塞尔曲线(4 + 3 = 7 个控制点)
var
Pts: array[0..6] of THPDFCurrPoint;
begin
// 第一段: Points[0]..Points[3](起点 + C1 + C2 + 终点)
Pts[0].X := 10; Pts[0].Y := 100; // 起点
Pts[1].X := 50; Pts[1].Y := 20; // 控制点1
Pts[2].X := 100; Pts[2].Y := 20; // 控制点2
Pts[3].X := 150; Pts[3].Y := 100; // 终点/第二段起点
// 第二段: Points[3]..Points[6]
Pts[4].X := 200; Pts[4].Y := 180; // 控制点1
Pts[5].X := 250; Pts[5].Y := 180; // 控制点2
Pts[6].X := 290; Pts[6].Y := 100; // 终点
HPDF.CurrentPage.SetLineWidth(1.5);
HPDF.CurrentPage.PolyBezier(Pts);
HPDF.CurrentPage.Stroke;
end;
另请参阅: Polyline Polygon CurveToC Stroke
|