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::NextMarker 方法两次,以获取路径中第二个标记分隔部分的起始索引和结束索引。 最后,代码绘制属于路径的第二个标记分隔部分的数据点。

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;
}

要求

要求
Header gdipluspath.h

另请参阅

构造并绘制轨迹

GraphicsPath

GraphicsPathIterator::NextMarker 方法

GraphicsPathIterator

GraphicsPathIterator::CopyData

GraphicsPathIterator::NextMarker 方法

路径