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


Метод GraphicsPathIterator::Enumerate (gdipluspath.h)

Метод GraphicsPathIterator::Enumerate копирует точки данных пути в массив PointF и копирует типы точек пути в массив BYTE .

Синтаксис

INT Enumerate(
  [out] PointF *points,
  [out] BYTE   *types,
  [in]  INT    count
);

Параметры

[out] points

Тип: PointF*

Указатель на массив, получающий точки данных пути.

[out] types

Тип: BYTE*

Указатель на массив, который получает типы точек пути.

[in] count

Тип: INT

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

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

Тип: INT

Этот метод возвращает количество полученных точек.

Комментарии

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

Чтобы определить количество точек данных в пути, можно вызвать метод GraphicsPathIterator::GetCount . Параметр points указывает на буфер, который получает точки данных, а параметр типов указывает на буфер, который получает типы. Перед вызовом метода GraphicsPathIterator::Enumerate необходимо выделить память для этих буферов. Размер буфера точек должен быть возвращаемым значением GraphicsPathIterator::GetCount , умноженным на sizeof(PointF). Размер буфера типов должен быть возвращаемым значением GraphicsPathIterator::GetCount.

Примеры

В следующем примере создается объект GraphicsPath и добавляется три строки в путь. Код создает объект GraphicsPathIterator и вызывает его метод GraphicsPathIterator::Enumerate для получения точек данных и типов точек пути. Затем код отображает число, возвращаемое методом GraphicsPathIterator::Enumerate .


#define BUFFER_SIZE 30
TCHAR numPointsEnum[BUFFER_SIZE];

// Add some lines to a path.
Point pts[] = {Point(20, 20), 
                Point(100, 20), 
                Point(100, 50), 
                Point(20, 50)};
GraphicsPath path;
path.AddLines(pts, 4);

// Create a GraphicsPathIterator object, and associate it with the path.
GraphicsPathIterator pathIterator(&path);

// Create destination arrays, and copy the path data to them.
UINT c = pathIterator.GetCount();
PointF* pEnumPoints = new PointF[c]; 
BYTE* pTypes = new BYTE[c];
INT count = pathIterator.Enumerate(pEnumPoints, pTypes, c);

// Confirm that the points were enumerated.
StringCchPrintf(
   numPointsEnum, BUFFER_SIZE, TEXT("%d points were enumerated."), count);

MessageBox(hWnd, numPointsEnum, TEXT("Enumerate"), NULL);

delete[] pEnumPoints;
delete[] pTypes;

Требования

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

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

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

GetPathData

Методы GetPathPoints

GetPathTypes

GetPointCount

GraphicsPath

GraphicsPathIterator

GraphicsPathIterator::CopyData

GraphicsPathIterator::GetCount

Пути