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 |
関連項目
GraphicsPathIterator::CopyData
GraphicsPathIterator::GetSubpathCount