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


Метод GraphicsPathIterator::NextMarker(INT*,INT*) (gdipluspath.h)

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

Синтаксис

INT NextMarker(
  INT *startIndex,
  INT *endIndex
);

Параметры

startIndex

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

endIndex

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

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

Этот метод возвращает количество точек данных в извлеченном разделе. Если разделов с разделителями маркерами больше нет, этот метод возвращает значение 0.

Комментарии

Путь содержит массив точек данных, определяющих его линии и кривые. Вы можете вызвать метод SetMarker пути, чтобы назначить определенные точки в массиве в качестве маркеров. Эти точки маркеров делят путь на разделы.

При первом вызове метода GraphicsPathIterator::NextMarker для итератора он получает первый раздел, разделенный маркерами, связанного пути этого итератора. Во второй раз он получает второй раздел и т. д. Каждый раз при вызове GraphicsPathIterator::NextSubpath возвращается количество точек данных в полученном разделе. Если разделов не осталось, возвращается значение 0.

Примеры

В следующем примере создается объект GraphicsPath и добавляется пять рисунков в путь. Вызовы метода SetMarker помещает в путь два маркера. Первый маркер находится в конце фигуры, а второй — в середине фигуры. Код передает адрес объекта GraphicsPath конструктору GraphicsPathIterator для создания итератора, связанного с путем. Затем код дважды вызывает метод GraphicsPathIterator::NextMarkerator итератора , чтобы получить начальный и конечный индексы второго раздела пути с разделителями маркерами. Наконец, код рисует точки данных, принадлежащие второму разделу пути с разделителями маркерами.

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

   // Create a graphics path with five figures (subpaths).
   GraphicsPath path;

   path.AddRectangle(Rect(20, 20, 60, 30));

   path.SetMarker();                          // first marker
   path.AddLine(100, 20, 160, 50);
   path.AddArc(180, 20, 60, 30, 0, 180);

   path.AddRectangle(Rect(260, 20, 60, 30));
   path.AddLine(340, 20, 400, 50);
   path.SetMarker();                          // second marker
   path.AddArc(340, 20, 60, 30, 0, 180);
   path.CloseFigure();
  
   path.AddRectangle(Rect(420, 20, 60, 30));

   // Create an iterator, and associate it with the path.
   GraphicsPathIterator iterator(&path);

   // Get the second marker-delimited section by calling NextMarker twice.
   INT start;
   INT end;
   INT count;
   count = iterator.NextMarker(&start, &end);
   count = iterator.NextMarker(&start, &end);

   // Get the data points of the second marker-delimited section.
   PointF* points = new PointF[count];
   BYTE* types = new BYTE[count];
   iterator.CopyData(points, types, start, end);

   // Draw the data points of the second marker-delimited section.
   SolidBrush brush(Color(255, 255, 0, 0));
   for(INT j = 0; j < count; ++j)
      graphics.FillEllipse(
         &brush,
         points[j].X - 3.0f,
         points[j].Y - 3.0f,
         6.0f,
         6.0f);

   delete points;
   delete types;
}

Требования

Требование Значение
Заголовок gdipluspath.h

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

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

GraphicsPath

Методы GraphicsPathIterator::NextMarker

GraphicsPathIterator

GraphicsPathIterator::CopyData

Методы GraphicsPathIterator::NextMarker

Пути