Graphics.EndContainer(GraphicsContainer) 方法

定義

關閉目前的圖形容器,並將這個 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 方法來建立巢狀圖形容器。 圖形容器會保留圖形狀態,例如轉換、裁剪區域和轉譯屬性。

當您呼叫 BeginContainerGraphics方法時,保留 狀態 Graphics 的資訊區塊會放在堆棧上。 方法會 BeginContainerGraphicsContainer 回 ,識別該資訊區塊。 當您將識別對象傳遞至 EndContainer 方法時,資訊區塊會從堆疊中移除,並用來將 還原 Graphics 至方法呼叫時 BeginContainer 的狀態。

容器可以是巢狀的;也就是說,您可以在呼叫 方法之前多次呼叫 BeginContainerEndContainer 方法。 每次呼叫 BeginContainer 方法時,都會將資訊區塊放在堆疊上,而您會收到 GraphicsContainer 資訊區塊的 。 當您將其中一個對象傳遞至 EndContainer 方法時,Graphics會傳回傳回該特定GraphicsContainerBeginContainer方法呼叫時的狀態。 該方法 BeginContainer 呼叫放置在堆疊上的資訊區塊會從堆疊中移除,而且也會移除該方法呼叫之後 BeginContainer 在該堆棧上放置的所有資訊區塊。

呼叫 方法時 Save ,會將資訊區塊放在與呼叫 BeginContainer 方法相同的堆疊上。 就像方法呼叫與BeginContainer方法呼叫配對一樣EndContainerRestore方法呼叫會與Save方法呼叫配對。

當您呼叫 EndContainer 方法時,方法 (堆疊上 Save 放置的所有資訊區塊,或 BeginContainer 方法) 方法的對應呼叫 BeginContainer 之後,都會從堆疊中移除。 同樣地,當您呼叫 Restore 方法時,方法 (堆疊上 Save 放置的所有資訊區塊,或 BeginContainer 方法) 方法的對應呼叫 Save 之後,都會從堆疊中移除。

適用於