Поделиться через


Метод GraphicsPath::AddCurve(constPointF*,INT,INT,INT,REAL) (gdipluspath.h)

Метод GraphicsPath::AddCurve добавляет кардинальный сплайн к текущему рисунку этого пути.

Синтаксис

Status AddCurve(
  [in] const PointF *points,
  [in] INT          count,
  [in] INT          offset,
  [in] INT          numberOfSegments,
  [in] REAL         tension
);

Параметры

[in] points

Тип: const PointF*

Указатель на массив точек, определяющих кардинальный сплайн. Кардинальный сплайн — это кривая, которая проходит через подмножество (задается параметрами offset и numberOfSegments ) точек в массиве.

[in] count

Тип: INT

Целое число, указывающее количество элементов в массиве точек .

[in] offset

Тип: INT

Целое число, указывающее индекс элемента массива, который используется в качестве первой точки кратного сплайна.

[in] numberOfSegments

Тип: INT

Целое число, указывающее количество сегментов в кратном сплайне. Сегменты — это кривые, соединяющие последовательные точки в массиве.

[in] tension

Тип: REAL

Неогрегативное вещественное число, определяющее длину кривой и способ ее изгиба. Значение 0 указывает, что сплайн является последовательностью сегментов прямой линии. По мере увеличения значения кривая становится более полной.

Возвращаемое значение

Тип: Состояние

В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .

Если метод завершается сбоем, он возвращает один из других элементов перечисления Status .

Комментарии

Если эти точки понадобятся позже, следует сохранить копию массива точек . Объект GraphicsPath не хранит точки, передаваемые методу AddClosedCurve ; вместо этого он преобразует кардинальный сплайн в последовательность сплайнов Безье и сохраняет точки, определяющие эти сплайны Безье. Невозможно получить исходный массив точек из объекта GraphicsPath .

Примеры

В следующем примере создается путь к объекту GraphicsPath, добавляется в путь кардинальный сплайн, а затем рисуется путь. Сплайн строится из точек, индексированных от 2 до 6, в массиве из восьми точек.

VOID AddCurveExample3(HDC hdc)
{
   Graphics graphics(hdc);
   GraphicsPath path;
   
   PointF pts[] = {PointF(50.0f, 50.0f),
                  PointF(70.0f, 80.0f),
                  PointF(100.0f, 100.0f),
                  PointF(130.0f, 40.0f),
                  PointF(150.0f, 90.0f),
                  PointF(180.0f, 30.0f),
                  PointF(210.0f, 120.0f),
                  PointF(240.0f, 80.0f)};
   path.AddCurve(
      pts, 
      8,     // There are eight points in the array. 
      2,     // Start at the point with index 2.
      4,     // Four segments. End at the point with index 6.
      1.0f);
   Pen pen(Color(255, 0, 0, 255));
   graphics.DrawPath(&pen, &path);
   // Draw all eight points in the array.
   SolidBrush brush(Color(255, 255, 0, 0));
   for(INT j = 0; j <= 7; ++j)
      graphics.FillEllipse(&brush, pts[j].X - 3.0f, pts[j].Y - 3.0f, 6.0f, 6.0f); 
}
Color(255, 255, 0,  0)

Требования

Требование Значение
Минимальная версия клиента Windows XP, Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdipluspath.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

Методы AddBezier

Методы AddBeziers

Методы AddClosedCurve

Методы AddCurve

Кардинальные сплайны

Обрезка с помощью региона

Построение и рисование контуров

Создание градиента пути

Рисование кардинальных сплайнов

GraphicsPath

Пути

Pointf