次の方法で共有


Graphics::BeginContainer

Graphics::BeginContainer メソッドは、新しいグラフィックス コンテナーを開始します。

構文

GraphicsContainer BeginContainer();

戻り値

種類: GraphicsContainer

このメソッドは、コンテナーを識別する値を返します。

解説

入れ子になったグラフィックス コンテナーを作成するには、このメソッドを使用します。 グラフィックス コンテナーは、変換、クリッピング領域、さまざまなレンダリング プロパティなど、グラフィックスの状態を保持するために使用されます。

Graphics::BeginContainer メソッドは GraphicsContainer 型の値を返します。 コンテナーの使用が完了したら、その値を Graphics::EndContainer メソッドに渡します。 GraphicsContainer データ型は Gdiplusenums.h で定義されています。

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 オブジェクトのクリッピング領域を設定し、グラフィックス コンテナーを開始します。 次に、コンテナーの追加のクリッピング領域を設定し、コンテナー内の有効なクリッピング領域を示す四角形を描画します。

VOID Example_BeginContainer(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, 400, 400);

   // 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, 400, 400);

   // Set the clipping region to infinite, and draw the outlines 
   // of 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 10 ビルド 20348
サポートされている最小のサーバー Windows 10 ビルド 20348
Header gdiplusgraphics.h

関連項目

グラフィックス

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

Graphics::EndContainer

Graphics::Restore

Graphics::Save

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