Freigeben über


Graphics.EndContainer(GraphicsContainer) Methode

Definition

Schließt den aktuellen Grafikcontainer und stellt den Zustand dieses Graphics wieder her, der durch einen Aufruf der BeginContainer() -Methode gespeichert wurde.

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)

Parameter

container
GraphicsContainer

GraphicsContainer, die den Container darstellt, den diese Methode wiederhergestellt.

Beispiele

Das folgende Codebeispiel wurde für die Verwendung mit Windows Forms entwickelt und erfordert PaintEventArgse, bei dem es sich um einen Parameter des Paint-Ereignishandlers handelt. Der Code führt die folgenden Aktionen aus:

  • Öffnet einen neuen Grafikcontainer und speichert den alten Container.

  • Übersetzt die Weltkoordinaten im Container.

  • Füllt ein rotes Rechteck in den (übersetzten Koordinaten) des neuen Containers.

  • Schließt den neuen Container und stellt den gespeicherten Container wieder her.

  • Füllt ein grünes Rechteck (in die nicht übersetzten Koordinaten) des gespeicherten Containers.

Das Ergebnis ist ein grünes Rechteck, das ein rotes Rechteck derselben Größe überliest.

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

Hinweise

Verwenden Sie diese Methode mit der BeginContainer-Methode, um geschachtelte Grafikcontainer zu erstellen. Grafikcontainer behalten den Grafikzustand bei, z. B. Transformation, Clippingbereich und Renderingeigenschaften.

Wenn Sie die BeginContainer-Methode einer Graphicsaufrufen, wird ein Informationsblock, der den Status der Graphics enthält, auf einem Stapel platziert. Die BeginContainer-Methode gibt eine GraphicsContainer zurück, die diesen Informationsblock identifiziert. Wenn Sie das identifizierende Objekt an die EndContainer-Methode übergeben, wird der Informationsblock aus dem Stapel entfernt und zum Wiederherstellen des Graphics zum Zeitpunkt des aufrufs der BeginContainer Methode verwendet.

Container können geschachtelt werden; Das heißt, Sie können die BeginContainer-Methode mehrmals aufrufen, bevor Sie die EndContainer-Methode aufrufen. Jedes Mal, wenn Sie die BeginContainer-Methode aufrufen, wird ein Informationsblock auf den Stapel gesetzt, und Sie erhalten eine GraphicsContainer für den Informationsblock. Wenn Sie eines dieser Objekte an die EndContainer-Methode übergeben, wird die Graphics zum Zeitpunkt des aufrufs der BeginContainer Methode zurückgegeben, die diesen bestimmten GraphicsContainerzurückgegeben hat. Der Informationsblock, der durch diesen BeginContainer Methodenaufruf auf dem Stapel platziert wird, wird aus dem Stapel entfernt, und alle Informationsblöcke, die nach diesem BeginContainer Methodenaufruf auf diesem Stapel platziert werden, werden ebenfalls entfernt.

Aufrufe der Save-Methode platzieren Informationsblöcke im selben Stapel wie Aufrufe der BeginContainer-Methode. Ebenso wie ein EndContainer Methodenaufruf mit einem BeginContainer Methodenaufruf gekoppelt ist, wird ein Restore Methodenaufruf mit einem Save Methodenaufruf gekoppelt.

Wenn Sie die EndContainer-Methode aufrufen, werden alle Informationsblöcke, die auf dem Stapel platziert werden (durch die Save-Methode oder durch die BeginContainer-Methode), nachdem der entsprechende Aufruf der BeginContainer-Methode aus dem Stapel entfernt wurde. Ebenso werden beim Aufrufen der Restore-Methode alle Informationsblöcke, die auf dem Stapel platziert werden (durch die Save-Methode oder durch die BeginContainer-Methode), nachdem der entsprechende Aufruf der Save-Methode aus dem Stapel entfernt wurde.

Gilt für: