次の方法で共有


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 フォームで使用できるように設計されており、Paint イベント ハンドラーのパラメーターである PaintEventArgseが必要です。 このコードは、次のアクションを実行します。

  • 新しいグラフィックス コンテナーを開き、古いコンテナーを保存します。

  • コンテナー内のワールド座標を変換します。

  • 新しいコンテナーの (翻訳された座標) に赤い四角形を塗りつぶします。

  • 新しいコンテナーを閉じ、保存されたコンテナーを復元します。

  • 保存されたコンテナーの緑色の四角形 (未変換の座標) を塗りつぶします。

結果は、同じサイズの赤い四角形の上にある緑色の四角形になります。

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 メソッドでこのメソッドを使用します。 グラフィックス コンテナーは、変換、クリッピング領域、レンダリング プロパティなどのグラフィックス状態を保持します。

GraphicsBeginContainer メソッドを呼び出すと、Graphics の状態を保持する情報ブロックがスタックに配置されます。 BeginContainer メソッドは、その情報ブロックを識別する GraphicsContainer を返します。 識別オブジェクトを EndContainer メソッドに渡すと、情報ブロックはスタックから削除され、BeginContainer メソッド呼び出し時の状態に Graphics を復元するために使用されます。

コンテナーは入れ子にすることができます。つまり、EndContainer メソッドを呼び出す前に、BeginContainer メソッドを複数回呼び出すことができます。 BeginContainer メソッドを呼び出すたびに、情報ブロックがスタックに配置され、情報ブロックの GraphicsContainer を受け取ります。 これらのオブジェクトの 1 つを EndContainer メソッドに渡すと、Graphics は、その特定の GraphicsContainerを返した BeginContainer メソッド呼び出し時の状態に戻されます。 その BeginContainer メソッド呼び出しによってスタックに配置された情報ブロックはスタックから削除され、その BeginContainer メソッド呼び出しの後にそのスタックに配置されたすべての情報ブロックも削除されます。

Save メソッドの呼び出しは、BeginContainer メソッドの呼び出しと同じスタックに情報ブロックを配置します。 EndContainer メソッド呼び出しが BeginContainer メソッド呼び出しとペアになっているのと同様に、Restore メソッド呼び出しは Save メソッド呼び出しとペアになります。

EndContainer メソッドを呼び出すと、BeginContainer メソッドの対応する呼び出しの後にスタックに配置されたすべての情報ブロック (Save メソッドまたは BeginContainer メソッドによって) がスタックから削除されます。 同様に、Restore メソッドを呼び出すと、Save メソッドの対応する呼び出しの後に (Save メソッドまたは BeginContainer メソッドによって) スタックに配置されたすべての情報ブロックがスタックから削除されます。

適用対象