次の方法で共有


GraphicsPathIterator::NextMarker(INT*,INT*) メソッド (gdipluspath.h)

GraphicsPathIterator::NextMarker メソッドは、この反復子の関連付けられたパス内の次のマーカー区切りセクションの開始インデックスと終了インデックスを取得します。

構文

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

パラメーター

startIndex

開始インデックスを受け取る INT へのポインター。

endIndex

終了インデックスを受け取る INT へのポインター。

戻り値

このメソッドは、取得したセクションのデータ ポイントの数を返します。 取得するマーカー区切りセクションがこれ以上ない場合、このメソッドは 0 を返します。

注釈

パスには、線と曲線を定義するデータ ポイントの配列があります。 パスの SetMarker メソッドを呼び出して、配列内の特定のポイントをマーカーとして指定できます。 これらのマーカー ポイントは、パスをセクションに分割します。

反復子の GraphicsPathIterator::NextMarker メソッドを初めて呼び出すと、その反復子の関連付けられたパスの最初のマーカー区切りセクションが取得されます。 2 回目は、2 番目のセクションを取得します。などです。 GraphicsPathIterator::NextSubpath を呼び出すたびに、取得したセクション内のデータ ポイントの数が返されます。 セクションが残っていない場合は、0 を返します。

次の例では 、GraphicsPath オブジェクトを作成し、パスに 5 つの図形を追加します。 SetMarker メソッドの呼び出しにより、パスに 2 つのマーカーが配置されます。 最初のマーカーは図形の末尾にあり、2 番目のマーカーは図の中央にあります。 このコードでは、GraphicsPath オブジェクトのアドレスを GraphicsPathIterator コンストラクターに渡して、パスに関連付けられた反復子を作成します。 次に、反復子の GraphicsPathIterator::NextMarker メソッドを 2 回呼び出して、パスの 2 番目のマーカー区切りセクションの開始インデックスと終了インデックスを取得します。 最後に、コードは、パスの 2 番目のマーカー区切りセクションに属するデータ ポイントを描画します。

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 メソッド

パス