Graphics::EndContainer メソッド (gdiplusgraphics.h)

Graphics::EndContainer メソッドは、Graphics::BeginContainer メソッドによって以前に開かれたグラフィックス コンテナーを閉じます。

構文

Status EndContainer(
  [in] GraphicsContainer state
);

パラメーター

[in] state

種類: GraphicsContainer

閉じるコンテナーを識別する値 (以前 は Graphics::BeginContainer によって返されました)。

戻り値

種類: 状態

メソッドが成功した場合は、Status 列挙体の要素である Ok を返します

メソッドが失敗した場合は、 Status 列挙体の他の要素のいずれかを返します。

解説

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

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

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

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

次の例では 、Graphics オブジェクトを作成し、そのクリッピング領域を設定します。 このコードでは、コンテナーを開始し、コンテナーの追加のクリッピング領域を設定します。 このコードは、四角形を 2 回埋めます。コンテナー内に 1 回、コンテナーの外側に 1 回 ( Graphics::EndContainer の呼び出しの後)。

VOID Example_EndContainer(HDC hdc)
{
   Graphics graphics(hdc);

   // Set the clipping region for the Graphics object.
   graphics.SetClip(Rect(10, 10, 150, 150));

   // Begin a graphics container.
   GraphicsContainer container = graphics.BeginContainer();

   // Set an additional clipping region for the container.
   graphics.SetClip(Rect(100, 50, 100, 75));

   // Fill a red rectangle in the container.
   SolidBrush redBrush(Color(255, 255, 0, 0));
   graphics.FillRectangle(&redBrush, 0, 0, 200, 200);

   // End the container, and fill the same rectangle with blue. 
   graphics.EndContainer(container);
   SolidBrush blueBrush(Color(128, 0, 0, 255));
   graphics.FillRectangle(&blueBrush, 0, 0, 200, 200);

   // Set the clipping region to infinite, and draw 
   // the two previous clipping regions.
   graphics.ResetClip();
   Pen blackPen(Color(255, 0, 0, 0), 2.0f);
   graphics.DrawRectangle(&blackPen, 10, 10, 150, 150);
   graphics.DrawRectangle(&blackPen, 100, 50, 100, 75);
}

要件

   
サポートされている最小のクライアント Windows XP、Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー gdiplusgraphics.h (Gdiplus.h を含む)
Library Gdiplus.lib
[DLL] Gdiplus.dll

関連項目

グラフィックス

グラフィックス コンテナー

Graphics::BeginContainer

Graphics::Restore

Graphics::Save

グラフィックス コンテナーの使用