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 |
另請參閱
GraphicsPathIterator::CopyData
GraphicsPathIterator::GetSubpathCount