Graphics::EndContainer 方法 (gdiplusgraphics.h)

Graphics::EndContainer 方法关闭以前由 Graphics::BeginContainer 方法打开的图形容器。

语法

Status EndContainer(
  [in] GraphicsContainer state
);

parameters

[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 对象将返回到返回该特定标识符的 Graphics::BeginContainer 调用时的状态。 从堆栈中删除 由 Graphics::BeginContainer 调用放置在堆栈上的信息块,并且该 Graphics::BeginContainer 调用之后放置在该堆栈上的所有信息块也会被删除。

调用 Graphics::Save 方法会将信息块放置在与调用 Graphics::BeginContainer 方法相同的堆栈上。 正如 Graphics::EndContainer 调用与 Graphics::BeginContainer 调用配对一样, Graphics::Restore 调用与 Graphics::Save 调用配对。

谨慎调用 Graphics::EndContainer 时,从 (堆栈中删除对 Graphics::BeginContainer 的相应调用后,由 Graphics::SaveGraphics::BeginContainer 放置在堆栈上的所有信息块) 。 同样,调用 Graphics::Restore 时,从堆栈中删除对 Graphics::Save 的相应调用后,由 Graphics::SaveGraphics::BeginContainer (放置在堆栈上的所有信息块) 。
 

示例

以下示例创建 一个 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)
Library Gdiplus.lib
DLL Gdiplus.dll

另请参阅

显卡

图形容器

Graphics::BeginContainer

Graphics::Restore

Graphics::Save

使用图形容器