Compartir a través de


Graphics.EndContainer(GraphicsContainer) Método

Definición

Cierra el contenedor de gráficos actual y restaura el estado de este Graphics al estado guardado por una llamada al método BeginContainer().

public:
 void EndContainer(System::Drawing::Drawing2D::GraphicsContainer ^ container);
public void EndContainer (System.Drawing.Drawing2D.GraphicsContainer container);
member this.EndContainer : System.Drawing.Drawing2D.GraphicsContainer -> unit
Public Sub EndContainer (container As GraphicsContainer)

Parámetros

container
GraphicsContainer

GraphicsContainer que representa el contenedor que restaura este método.

Ejemplos

El ejemplo de código siguiente está diseñado para su uso con Windows Forms y requiere PaintEventArgse, que es un parámetro del controlador de eventos Paint. El código realiza las siguientes acciones:

  • Abre un nuevo contenedor de gráficos y guarda el contenedor anterior.

  • Traduce las coordenadas del mundo en el contenedor.

  • Rellena un rectángulo rojo en el nuevo contenedor (coordenadas traducidas del).

  • Cierra el nuevo contenedor y restaura el contenedor guardado.

  • Rellena un rectángulo verde (en las coordenadas sin traducir) del contenedor guardado.

El resultado es un rectángulo verde que sobrepone un rectángulo rojo del mismo tamaño.

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.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 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

Comentarios

Use este método con el método BeginContainer para crear contenedores de gráficos anidados. Los contenedores de gráficos conservan el estado de los gráficos, como la transformación, la región de recorte y las propiedades de representación.

Cuando se llama al método BeginContainer de un Graphics, se coloca un bloque de información que contiene el estado del Graphics en una pila. El método BeginContainer devuelve un GraphicsContainer que identifica ese bloque de información. Al pasar el objeto de identificación al método EndContainer, el bloque de información se quita de la pila y se usa para restaurar el Graphics al estado en el que se encontraba en el momento de la llamada al método BeginContainer.

Los contenedores se pueden anidar; es decir, puede llamar al método BeginContainer varias veces antes de llamar al método EndContainer. Cada vez que se llama al método BeginContainer, se coloca un bloque de información en la pila y se recibe un GraphicsContainer para el bloque de información. Al pasar uno de esos objetos al método EndContainer, el Graphics se devuelve al estado en el que estaba en el momento de la llamada al método BeginContainer que devolvió ese GraphicsContainerconcreto. El bloque de información colocado en la pila por ese BeginContainer llamada al método se quita de la pila y también se quitan todos los bloques de información colocados en esa pila después de esa llamada al método BeginContainer.

Las llamadas al método Save colocan bloques de información en la misma pila que las llamadas al método BeginContainer. Al igual que una llamada al método EndContainer se empareja con una llamada de método BeginContainer, una llamada de método Restore se empareja con una llamada de método Save.

Cuando se llama al método EndContainer, todos los bloques de información colocados en la pila (por el método Save o por el método BeginContainer) después de la llamada correspondiente al método BeginContainer se quitan de la pila. Del mismo modo, al llamar al método Restore, todos los bloques de información colocados en la pila (por el método Save o por el método BeginContainer) después de la llamada correspondiente al método Save se quitan de la pila.

Se aplica a