绘制基数样条

基数自由绘制曲线是一条平滑通过一组给定点的曲线。 若要绘制基本样条,请创建 Graphics 对象并将点数组的地址传递给 Graphics::D rawCurve 方法。 以下示例绘制一个通过五个指定点的钟形基样条:

Point points[] = {Point(0, 100),
                  Point(50, 80),
                  Point(100, 20),
                  Point(150, 80),
                  Point(200, 100)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5);

下图显示了该曲线和五个点。

通过一组五个点的基数样条的插图

可以使用 Graphics 类的Graphics::D rawClosedCurve 方法绘制闭合的基数样条。 在闭合基数自由绘制曲线中,曲线在数组的最后一个点继续,与数组中的第一个点连接。

以下示例绘制了一条通过六个指定点的闭合基数自由绘制曲线。

Point points[] = {Point(60, 60),
   Point(150, 80),
   Point(200, 40),
   Point(180, 120),
   Point(120, 100),
   Point(80, 160)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawClosedCurve(&pen, points, 6);

下图显示了闭合自由绘制曲线以及六个点:

通过一组六个点的闭合基数样条图的插图

可以通过将张拉参数传递给 Graphics::D rawCurve 方法来更改基数样条曲线的弯曲方式。 以下示例绘制三个通过相同点集的基数样条:

Point points[] = {Point(20, 50),
                  Point(100, 10),
                  Point(200, 100),
                  Point(300, 50),
                  Point(400, 80)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5, 0.0f);  // tension 0.0
graphics.DrawCurve(&pen, points, 5, 0.6f);  // tension 0.6
graphics.DrawCurve(&pen, points, 5, 1.0f);  // tension 1.0

下图显示了三条自由绘制曲线及其张力值。 注意,张力为 0 时,点之间用直线连接。

三个基线样条通过同一组点但处于不同紧张状态的插图