Graphics.EndContainer(GraphicsContainer) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
關閉目前的圖形容器,並將這個 Graphics 的狀態還原至呼叫 BeginContainer() 方法所儲存的狀態。
public:
void EndContainer(System::Drawing::Drawing2D::GraphicsContainer ^ container);
public void EndContainer (System.Drawing.Drawing2D.GraphicsContainer container);
member this.EndContainer : System.Drawing.Drawing2D.GraphicsContainer -> unit
Public Sub EndContainer (container As GraphicsContainer)
參數
- container
- GraphicsContainer
GraphicsContainer,表示這個方法還原的容器。
範例
下列程式代碼範例是專為搭配 Windows Forms 使用而設計,而且需要 PaintEventArgse
,這是 Paint 事件處理程式的參數。 程式代碼會執行下列動作:
開啟新的圖形容器,並儲存舊的容器。
轉譯容器中的世界座標。
在新的容器中填入紅色矩形(已翻譯的座標)。
關閉新的容器並還原已儲存的容器。
填滿已儲存容器的綠色矩形(到未轉譯的座標)。
結果是綠色矩形,其會覆用相同大小的紅色矩形。
public:
void EndContainerState( PaintEventArgs^ e )
{
// Begin graphics container.
GraphicsContainer^ containerState = e->Graphics->BeginContainer();
// Translate world transformation.
e->Graphics->TranslateTransform( 100.0F, 100.0F );
// Fill translated rectangle in container with red.
e->Graphics->FillRectangle( gcnew SolidBrush( Color::Red ), 0, 0, 200, 200 );
// End graphics container.
e->Graphics->EndContainer( containerState );
// Fill untransformed rectangle with green.
e->Graphics->FillRectangle( gcnew SolidBrush( Color::Green ), 0, 0, 200, 200 );
}
public void EndContainerState(PaintEventArgs e)
{
// Begin graphics container.
GraphicsContainer containerState = e.Graphics.BeginContainer();
// Translate world transformation.
e.Graphics.TranslateTransform(100.0F, 100.0F);
// Fill translated rectangle in container with red.
e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 200, 200);
// End graphics container.
e.Graphics.EndContainer(containerState);
// Fill untransformed rectangle with green.
e.Graphics.FillRectangle(new SolidBrush(Color.Green), 0, 0, 200, 200);
}
Public Sub EndContainerState(ByVal e As PaintEventArgs)
' Begin graphics container.
Dim containerState As GraphicsContainer = _
e.Graphics.BeginContainer()
' Translate world transformation.
e.Graphics.TranslateTransform(100.0F, 100.0F)
' Fill translated rectangle in container with red.
e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, _
200, 200)
' End graphics container.
e.Graphics.EndContainer(containerState)
' Fill untransformed rectangle with green.
e.Graphics.FillRectangle(New SolidBrush(Color.Green), 0, 0, _
200, 200)
End Sub
備註
使用此方法搭配 BeginContainer 方法來建立巢狀圖形容器。 圖形容器會保留圖形狀態,例如轉換、裁剪區域和轉譯屬性。
當您呼叫 Graphics的 BeginContainer 方法時,會將保留 Graphics 狀態的資訊區塊放在堆疊上。 BeginContainer 方法會傳回識別該資訊區塊的 GraphicsContainer。 當您將識別對象傳遞至 EndContainer 方法時,資訊區塊會從堆疊中移除,並用來將 Graphics 還原至 BeginContainer 方法呼叫時的狀態。
容器可以是巢狀的;也就是說,您可以在呼叫 EndContainer 方法之前呼叫 BeginContainer 方法數次。 每次呼叫 BeginContainer 方法時,都會將資訊區塊放在堆棧上,而且您會收到資訊區塊的 GraphicsContainer。 當您將其中一個對象傳遞至 EndContainer 方法時,Graphics 會傳回在傳回該特定 GraphicsContainer的 BeginContainer 方法呼叫時的狀態。 由該 BeginContainer 方法呼叫放置於堆疊上的資訊區塊會從堆疊中移除,而且在該 BeginContainer 方法呼叫之後放置於該堆疊上的所有資訊區塊也會移除。
呼叫 Save 方法會將資訊區塊放在與呼叫 BeginContainer 方法相同的堆疊上。 就像 EndContainer 方法呼叫與 BeginContainer 方法呼叫配對時,Restore 方法呼叫會與 Save 方法呼叫配對。
當您呼叫 EndContainer 方法時,系統會從堆疊中移除對應呼叫 BeginContainer 方法之後放置於堆疊上的所有資訊區塊(由 Save 方法或 BeginContainer 方法。 同樣地,當您呼叫 Restore 方法時,會在對應呼叫 Save 方法之後,將放置在堆疊上的所有資訊區塊(由 Save 方法或 BeginContainer 方法移除。