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 中定义。
dstrect 和 srcrect 参数指定转换。 应用于 srcrect 时,转换会导致 dstrect。
调用 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::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) |
Library | Gdiplus.lib |
DLL | Gdiplus.dll |