GraphicsPathIterator::NextMarker (INT*,INT*) 方法 (gdipluspath.h)
GraphicsPathIterator::NextMarker 方法會取得這個反覆運算器相關聯路徑中下一個標記分隔區段的起始索引和結束索引。
語法
INT NextMarker(
INT *startIndex,
INT *endIndex
);
參數
startIndex
接收起始索引的 INT 指標。
endIndex
接收結束索引的 INT 指標。
傳回值
這個方法會傳回所擷取區段中的數據點數目。 如果沒有其他標記分隔區段可擷取,這個方法會傳回 0。
備註
路徑具有定義其線條和曲線的數據點陣列。 您可以呼叫路徑的 SetMarker 方法,將陣列中的特定點指定為標記。 這些標記點會將路徑分割成區段。
第一次呼叫反覆運算器的 GraphicsPathIterator::NextMarker 方法時,它會取得該反覆運算器相關聯路徑的第一個標記分隔區段。 第二次,它會取得第二個區段,依此類故。 每次呼叫 GraphicsPathIterator::NextSubpath 時,它會傳回所擷取區段中的數據點數目。 如果沒有剩餘的區段,則會傳回 0。
範例
下列範例會建立 GraphicsPath 物件,並將五個圖形新增至路徑。 對 SetMarker 方法的呼叫會將兩個標記放在路徑中。 第一個標記位於圖形的結尾,而第二個標記位於圖中間。 程序代碼會將 GraphicsPath 物件的地址傳遞至 GraphicsPathIterator 建構函式,以建立與路徑相關聯的反覆運算器。 然後,程式代碼會呼叫反覆運算器的 GraphicsPathIterator::NextMarker 方法兩次,以取得路徑中第二個標記分隔區段的開始和結束索引。 最後,程式代碼會繪製屬於路徑第二個標記分隔區段的數據點。
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;
}
規格需求
需求 | 值 |
---|---|
標頭 | gdipluspath.h |
另請參閱
GraphicsPathIterator::NextMarker 方法
GraphicsPathIterator::CopyData