共用方式為


GraphicsPathIterator::NextSubpath (INT*,INT*,BOOL*) 方法 (gdipluspath.h)

GraphicsPathIterator::NextSubpath方法會取得下一個子路徑的起始索引和結束索引, (此反覆運算器的相關聯路徑中) 。

語法

INT NextSubpath(
  INT  *startIndex,
  INT  *endIndex,
  BOOL *isClosed
);

參數

startIndex

接收起始索引的 INT 指標。

endIndex

接收結束索引的 INT 指標。

isClosed

BOOL的指標,這個值會指出取得的圖表是否已關閉。 如果圖表已關閉,則收到的值為 TRUE;否則,收到的值為 FALSE

傳回值

這個方法會傳回下一個圖中的資料點數目。 如果路徑中沒有其他數位,這個方法會傳回 0。

備註

第一次呼叫反覆運算器的 GraphicsPathIterator::NextSubpath 方法時,它會取得該反覆運算器相關聯路徑) 第一個圖的索引 (子路徑。 第二次,它會取得第二個圖形的索引,依此類故。 每次呼叫 GraphicsPathIterator::NextSubpath時,它會傳回已擷取索引的圖形中的資料點數目。 如果沒有剩餘的數位,則會傳回 0。

範例

下列範例會建立 GraphicsPath 物件,並將五個圖形新增至路徑。 程式碼會將 該 GraphicsPath 物件的位址傳遞至 GraphicsPathIterator 建構函式,以建立與路徑相關聯的反覆運算器。 程式碼會呼叫反覆運算器的 GraphicsPathIterator::NextSubpath 方法三次,以取得路徑第三個圖的起始索引和結束索引。 然後,程式碼會呼叫反覆運算器的 GraphicsPathIterator::CopyData 方法,以擷取第三個圖的資料點。

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

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

   path.AddRectangle(Rect(20, 20, 60, 30));   // Subpath count is 1.

   path.AddLine(100, 20, 160, 50);            // Subpath count is 2.
   path.AddArc(180, 20, 60, 30, 0.0f, 180.0f);

   path.AddRectangle(Rect(260, 20, 60, 30));  // Subpath count is 3.

   path.AddLine(340, 20, 400, 50);            // Subpath count is 4.
   path.AddArc(340, 20, 60, 30, 0.0f, 180.0f);
   path.CloseFigure();
  
   path.AddRectangle(Rect(420, 20, 60, 30));  // Subpath count is 5.

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

   // Call NextSubpath three times to get the starting and ending
   // indices for the third figure.
   INT start;
   INT end;
   BOOL isClosed;
   INT count;
   count = iterator.NextSubpath(&start, &end, &isClosed);
   count = iterator.NextSubpath(&start, &end, &isClosed);
   count = iterator.NextSubpath(&start, &end, &isClosed);

   // Get the third figure's data points.
   PointF* points = new PointF[count];
   BYTE* types = new BYTE[count];
   iterator.CopyData(points, types, start, end);

   // Draw the third figure's data points.
   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::GetPathData

GraphicsPath

GraphicsPathIterator

GraphicsPathIterator::CopyData

GraphicsPathIterator::GetSubpathCount

GraphicsPathIterator::NextMarker 方法

NextSubpath

路徑