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


Метод GraphicsPath::GetPathPoints(Point*,INT) (gdipluspath.h)

Метод GraphicsPath::GetPathPoints получает массив точек этого пути. Массив содержит конечные точки и контрольные точки линий и строк Bézier, которые используются для рисования пути.

Синтаксис

Status GetPathPoints(
  [out] Point *points,
  [in]  INT   count
);

Параметры

[out] points

Тип: точка*

Указатель на массив объектов Point, получающих точки данных. Необходимо выделить память для этого массива. Чтобы определить требуемый размер массива, можно вызвать метод GraphicsPath::GetPointCount. Размер в байтах должен быть возвращаемым значением GraphicsPath::GetPointCount умножен на размер(Point).

[in] count

Тип: INT

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

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

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

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

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

Замечания

Объект GraphicsPath содержит массив точек и массив типов. Каждый элемент в массиве типов — это байт, указывающий тип точки и набор флагов для соответствующего элемента в массиве точек. Возможные типы и флаги точек перечислены в перечислении PathPointType.

Примеры

В следующем примере создается и рисуется путь, имеющий линию, прямоугольник, многоточие и кривую. Код вызывает метод graphicsPath::GetPointCount, чтобы определить количество точек данных, хранящихся в пути. Код выделяет буфер достаточно большой для получения массива точек данных и передает адрес этого буфера методу GraphicsPath::GetPathPoints. Наконец, код рисует каждую точку данных пути.

VOID GetPathPointsExample(HDC hdc)
{
   Graphics graphics(hdc);

   // Create a path that has a line, a rectangle, an ellipse, and a curve.
   GraphicsPath path;

   Point points[] = {
      Point(200, 200),
      Point(250, 240),
      Point(200, 300),
      Point(300, 310),
      Point(250, 350)};

   path.AddLine(20, 100, 150, 200);
   path.AddRectangle(Rect(40, 30, 80, 60));
   path.AddEllipse(Rect(200, 30, 200, 100));
   path.AddCurve(points, 5);

   // Draw the path.
   Pen pen(Color(255, 0, 0, 255));
   graphics.DrawPath(&pen, &path);

   // Get the path points.
   INT count = path.GetPointCount();
   Point* dataPoints = new Point[count];
   path.GetPathPoints(dataPoints, count);

   // Draw the path's data points.
   SolidBrush brush(Color(255, 255, 0, 0));
   for(INT j = 0; j < count; ++j)
   {
      graphics.FillEllipse(
         &brush, 
         dataPoints[j].X - 3.0f, 
         dataPoints[j].Y - 3.0f,
         6.0f,
         6.0f);
   }
   delete [] dataPoints; 
}
Color(255, 255, 0,  0)

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP, Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка gdipluspath.h (include Gdiplus.h)
библиотеки Gdiplus.lib
DLL Gdiplus.dll

См. также

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

пути создания и рисования

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

GraphicsPath

GraphicsPath::GetPathData

GraphicsPath::GetPathTypes

GraphicsPath::GetPointCount

PathData

PathPointType

пути

point