次の方法で共有


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 メソッドを初めて呼び出すと、その反復子の関連付けられたパスの最初の図 (サブパス) のインデックスが取得されます。 2 回目は、2 番目の図のインデックスを取得します。などです。 GraphicsPathIterator::NextSubpath を呼び出すたびに、インデックスが取得された図のデータ ポイントの数が返されます。 数値が残っていない場合は、0 を返します。

次の例では 、GraphicsPath オブジェクトを作成し、パスに 5 つの図形を追加します。 このコードでは、 その GraphicsPath オブジェクトのアドレスを GraphicsPathIterator コンストラクターに渡して、パスに関連付けられた反復子を作成します。 このコードでは、反復子の GraphicsPathIterator::NextSubpath メソッドを 3 回呼び出して、パスの 3 番目の図の開始インデックスと終了インデックスを取得します。 次に、反復子の GraphicsPathIterator::CopyData メソッドを呼び出して、3 番目の図形のデータ ポイントを取得します。

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

必要条件

   
Header gdipluspath.h

関連項目

パスの作成および描画

GraphicsPath::GetPathData

Graphicspath

GraphicsPathIterator

GraphicsPathIterator::CopyData

GraphicsPathIterator::GetSubpathCount

GraphicsPathIterator::NextMarker メソッド

NextSubpath

パス