Graphics.EndContainer 方法

关闭当前图形容器,并将此 Graphics 的状态还原到通过调用 BeginContainer 方法保存的状态。

**命名空间:**System.Drawing
**程序集:**System.Drawing(在 system.drawing.dll 中)

语法

声明
Public Sub EndContainer ( _
    container As GraphicsContainer _
)
用法
Dim instance As Graphics
Dim container As GraphicsContainer

instance.EndContainer(container)
public void EndContainer (
    GraphicsContainer container
)
public:
void EndContainer (
    GraphicsContainer^ container
)
public void EndContainer (
    GraphicsContainer container
)
public function EndContainer (
    container : GraphicsContainer
)

参数

备注

将此方法与 BeginContainer 方法一起使用以创建嵌套的图形容器。图形容器保留图形状态(如变形、剪辑区域和呈现属性)。

当调用 GraphicsBeginContainer 方法时,一个保存 Graphics 状态的信息块将被放在堆栈上。BeginContainer 方法返回一个标识该信息块的 GraphicsContainer。当您将此标识对象传递给 EndContainer 方法时,该信息块会从堆栈中移除并用于将 Graphics 还原到它在 BeginContainer 方法调用时的状态。

容器可以嵌套;即,在调用 EndContainer 方法之前可以多次调用 BeginContainer 方法。您每次调用 BeginContainer 方法时,都有一个信息块被放在堆栈上,同时您将接收到该信息块的一个 GraphicsContainer。当将其中某个对象传递给 EndContainer 方法时,Graphics 返回到它在 BeginContainer 方法调用时所处的状态,该方法调用返回了该特定的 GraphicsContainer。由该 BeginContainer 方法调用放在堆栈上的信息块会从堆栈中移除,而且在该 BeginContainer 方法调用之后放在该堆栈上的所有信息块也会被移除。

Save 方法调用与 BeginContainer 方法调用将信息块放在同一堆栈上。正如 EndContainer 方法调用与 BeginContainer 方法调用成对出现一样,Restore 方法调用与 Save 方法调用也成对出现。

当调用 EndContainer 方法时,在相应的 Save 方法调用(由 BeginContainer 方法或 BeginContainer 方法)之后放在堆栈上的所有信息块都从堆栈中被移除。同样,当您调用 Restore 方法时,在相应的 Save 方法调用之后(由 Save 方法或 Save 方法)放在堆栈上的所有信息块都从堆栈中被移除。

示例

下面的代码示例设计为与 Windows 窗体一起使用,它需要 PaintEventArgse,即 Paint 事件处理程序的一个参数。代码执行下列操作:

  • 打开新的图形容器并保存旧的容器。

  • 转换容器中的通用坐标。

  • 填充新容器(已转换坐标系)中的红色矩形。

  • 关闭新的容器并还原已保存的容器。

  • 填充已保存容器(未转换坐标系)中的绿色矩形。

结果是绿色矩形覆盖在大小相同的红色矩形之上。

Public Sub EndContainerState(ByVal e As PaintEventArgs)

    ' Begin graphics container.
    Dim containerState As GraphicsContainer = _
    e.Graphics.BeginContainer()

    ' Translate world transformation.
    e.Graphics.TranslateTransform(100.0F, 100.0F)

    ' Fill translated rectangle in container with red.
    e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, _
    200, 200)

    ' End graphics container.
    e.Graphics.EndContainer(containerState)

    ' Fill untransformed rectangle with green.
    e.Graphics.FillRectangle(New SolidBrush(Color.Green), 0, 0, _
    200, 200)
End Sub
public void EndContainerState(PaintEventArgs e)
{
             
    // Begin graphics container.
    GraphicsContainer containerState = e.Graphics.BeginContainer();
             
    // Translate world transformation.
    e.Graphics.TranslateTransform(100.0F, 100.0F);
             
    // Fill translated rectangle in container with red.
    e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 200, 200);
             
    // End graphics container.
    e.Graphics.EndContainer(containerState);
             
    // Fill untransformed rectangle with green.
    e.Graphics.FillRectangle(new SolidBrush(Color.Green), 0, 0, 200, 200);
}
public:
   void EndContainerState( PaintEventArgs^ e )
   {
      // Begin graphics container.
      GraphicsContainer^ containerState = e->Graphics->BeginContainer();

      // Translate world transformation.
      e->Graphics->TranslateTransform( 100.0F, 100.0F );

      // Fill translated rectangle in container with red.
      e->Graphics->FillRectangle( gcnew SolidBrush( Color::Red ), 0, 0, 200, 200 );

      // End graphics container.
      e->Graphics->EndContainer( containerState );

      // Fill untransformed rectangle with green.
      e->Graphics->FillRectangle( gcnew SolidBrush( Color::Green ), 0, 0, 200, 200 );
   }
public void EndContainerState(PaintEventArgs e) 
{
    // Begin graphics container.
    GraphicsContainer containerState = e.get_Graphics().BeginContainer();

    // Translate world transformation.
    e.get_Graphics().TranslateTransform(100, 100);

    // Fill translated rectangle in container with red.
    e.get_Graphics().FillRectangle(new SolidBrush(Color.get_Red()), 0, 0,
        200, 200);

    // End graphics container.
    e.get_Graphics().EndContainer(containerState);

    // Fill untransformed rectangle with green.
    e.get_Graphics().FillRectangle(new SolidBrush(Color.get_Green()), 0, 0,
        200, 200);
} //EndContainerState

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

Graphics 类
Graphics 成员
System.Drawing 命名空间