Share via


Graphics::BeginContainer

Graphics::BeginContainer方法會開始新的圖形容器。

Syntax

GraphicsContainer BeginContainer();

傳回值

類型: GraphicsContainer

這個方法會傳回可識別容器的值。

備註

使用這個方法來建立巢狀圖形容器。 圖形容器可用來保留圖形狀態,例如轉換、裁剪區域和各種轉譯屬性。

Graphics::BeginContainer方法會傳回GraphicsContainer類型的值。 當您完成使用容器時,請將該值傳遞至 Graphics::EndContainer 方法。 GraphicsContainer 資料類型是在 Gdiplusenums.h 中定義。

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

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

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

謹慎 當您呼叫 Graphics::EndContainer時, 在圖形::SaveGraphics::BeginContainer) 對應 呼叫 Graphics::BeginContainer 之後,堆疊 (上放置的所有資訊區塊都會從堆疊中移除。 同樣地,當您呼叫Graphics::Restore時,在圖形::SaveGraphics::BeginContainer) 對應呼叫 Graphics::Save之後,堆疊 (上放置的所有資訊區塊都會從堆疊中移除。
 
如需圖形容器的詳細資訊,請參閱 巢狀圖形容器

範例

下列範例會設定 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
標頭 gdiplusgraphics.h

另請參閱

圖形

圖形容器

Graphics::EndContainer

Graphics::Restore

Graphics::Save

使用圖形容器