Share via


Graphics::BeginContainer (constRectF&,constRectF&,Unit) 方法 (gdiplusgraphics.h)

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

語法

GraphicsContainer BeginContainer(
  const RectF & dstrect,
  const RectF & srcrect,
  Unit          unit
);

參數

dstrect

srcrect 一起指定容器轉換的矩形參考。

srcrect

dstrect 一起指定容器轉換的矩形參考。

unit

容器的測量單位。

傳回值

類型:類型: GraphicsContainer

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

備註

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

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

dstrectsrcrect 參數會指定轉換。 這是套用至 srcrect 時會產生 dstrect 的轉換。

當您呼叫 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 時,在圖形::SaveGraphics::BeginContainer) 對應呼叫 Graphics::BeginContainer 之後,會將所有資訊區塊放在堆棧上 (。 同樣地,當您呼叫 Graphics::Restore 時,在圖形::SaveGraphics::BeginContainer) 對應呼叫 Graphics::Save 之後,堆棧 (上放置的所有資訊區塊都會從堆棧中移除。

如需圖形容器的詳細資訊,請參閱 巢狀圖形容器

範例

下列範例會呼叫 BeginContainer 方法來建立圖形容器。 程序代碼會將兩個矩形傳遞至 BeginContainer 方法,以指定容器的轉換。 程序代碼會在呼叫 Graphics::EndContainer) 之後呼叫 Graphics::FillEllipse 兩次:一次在容器內,一次位於容器外部 (。

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

   // Define a translation and scale transform for the container.
   RectF srcRect(0, 0, 200, 100);
   RectF destRect(100, 100, 200, 200);

   // Create a graphics container with a (100, 100) translation
   // and (1, 2) scale.
   GraphicsContainer container;
   container = graphics.BeginContainer(destRect, srcRect, UnitPixel);

   // Fill a rectangle in the container.
   SolidBrush redBrush(Color(255, 255, 0, 0));
   graphics.FillEllipse(&redBrush, 0, 0, 100, 60);

   // End the container.
   graphics.EndContainer(container);

   // Fill a rectangle outside the container.
   SolidBrush blueBrush(Color(255, 0, 0, 255));
   graphics.FillEllipse(&blueBrush, 0, 0, 100, 60);

規格需求

   
最低支援的用戶端 Windows XP、Windows 2000 Professional [僅限桌面應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 gdiplusgraphics.h (包含 Gdiplus.h)
程式庫 Gdiplus.lib
Dll Gdiplus.dll

另請參閱

圖形

圖形容器

Graphics::EndContainer

Graphics::Restore

Graphics::Save

使用圖形容器