Share via


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

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

語法

GraphicsContainer BeginContainer(
  [in, ref] const Rect & dstrect,
  [in, ref] const Rect & srcrect,
  [in]      Unit         unit
);

參數

[in, ref] dstrect

類型: const Rect

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

[in, ref] srcrect

類型: const Rect

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

[in] 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 時,在圖形::Save 或 Graphics::BeginContainer) 對應呼叫 Graphics::BeginContainer 之後,會將堆棧上放置的所有資訊區塊 (。 同樣地,當您呼叫 Graphics::Restore 時,圖形::Save 或 Graphics::BeginContainer) 對應呼叫 Graphics::Save 之後,堆棧 (上放置的所有資訊區塊都會從堆棧中移除。
 
如需圖形容器的詳細資訊,請參閱 巢狀圖形容器

範例

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

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

   // Define a translation and scale transformation for the container.
   Rect srcRect(0, 0, 200, 100);
   Rect 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 an ellipse in the container.
   SolidBrush redBrush(Color(255, 255, 0, 0));
   graphics.FillEllipse(&redBrush, 0, 0, 100, 60);

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

   // Fill the same ellipse 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

使用圖形容器