Share via


Graphics::EndContainer 方法 (gdiplusgraphics.h)

Graphics::EndContainer方法會關閉先前由Graphics::BeginContainer方法開啟的圖形容器。

語法

Status EndContainer(
  [in] GraphicsContainer state
);

參數

[in] state

類型: GraphicsContainer

Graphics::BeginContainer先前傳回的值 () ,可識別要關閉的容器。

傳回值

類型: 狀態

如果方法成功,它會傳回 Ok,這是 Status 列舉的元素。

如果方法失敗,它會傳回 Status 列舉的其中一個其他元素。

備註

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

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

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

謹慎當您呼叫Graphics::EndContainer時,在圖形::Save 或 Graphics::BeginContainer) 對應呼叫Graphics::BeginContainer之後,會將堆疊上放置的所有資訊區塊 (。 同樣地,當您呼叫Graphics::Restore時,圖形::Save 或 Graphics::BeginContainer) 對應呼叫Graphics::Save之後,堆疊 (上放置的所有資訊區塊都會從堆疊中移除。
 

範例

下列範例會建立 Graphics 物件,並設定其裁剪區域。 程式碼會開始容器,並設定容器的其他裁剪區域。 程式碼會在呼叫 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)
程式庫 Gdiplus.lib
Dll Gdiplus.dll

另請參閱

圖形

圖形容器

Graphics::BeginContainer

Graphics::Restore

Graphics::Save

使用圖形容器