Freigeben über


Graphics.Restore(GraphicsState) Methode

Definition

Stellt den Zustand dieses Graphics in den Zustand zurück, der durch eine GraphicsStatedargestellt wird.

public:
 void Restore(System::Drawing::Drawing2D::GraphicsState ^ gstate);
public void Restore (System.Drawing.Drawing2D.GraphicsState gstate);
member this.Restore : System.Drawing.Drawing2D.GraphicsState -> unit
Public Sub Restore (gstate As GraphicsState)

Parameter

gstate
GraphicsState

GraphicsState, der den Zustand darstellt, in dem diese Graphicswiederhergestellt werden soll.

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:

  • Übersetzt die Welttransformation der Windows Form durch einen Vektor (100, 0).

  • Speichert den Grafikstatus des Formulars.

  • Setzt die Welttransformation des Formulars auf eine Identität zurück und füllt ein Rechteck mit einem einfarbigen roten Pinsel.

  • Stellt den übersetzten Grafikzustand wieder her und füllt ein zweites Rechteck mit einem vollblauen Pinsel.

Das Ergebnis ist ein untranslatiertes rot gefülltes Rechteck und ein übersetztes blau gefülltes Rechteck.

public:
   void SaveRestore2( PaintEventArgs^ e )
   {
      // Translate transformation matrix.
      e->Graphics->TranslateTransform( 100, 0 );

      // Save translated graphics state.
      GraphicsState^ transState = e->Graphics->Save();

      // Reset transformation matrix to identity and fill rectangle.
      e->Graphics->ResetTransform();
      e->Graphics->FillRectangle( gcnew SolidBrush( Color::Red ), 0, 0, 100, 100 );

      // Restore graphics state to translated state and fill second
      // rectangle.
      e->Graphics->Restore( transState );
      e->Graphics->FillRectangle( gcnew SolidBrush( Color::Blue ), 0, 0, 100, 100 );
   }
private void SaveRestore2(PaintEventArgs e)
{

    // Translate transformation matrix.
    e.Graphics.TranslateTransform(100, 0);

    // Save translated graphics state.
    GraphicsState transState = e.Graphics.Save();

    // Reset transformation matrix to identity and fill rectangle.
    e.Graphics.ResetTransform();
    e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 100, 100);

    // Restore graphics state to translated state and fill second

    // rectangle.
    e.Graphics.Restore(transState);
    e.Graphics.FillRectangle(new SolidBrush(Color.Blue), 0, 0, 100, 100);
}
Private Sub SaveRestore2(ByVal e As PaintEventArgs)

    ' Translate transformation matrix.
    e.Graphics.TranslateTransform(100, 0)

    ' Save translated graphics state.
    Dim transState As GraphicsState = e.Graphics.Save()

    ' Reset transformation matrix to identity and fill rectangle.
    e.Graphics.ResetTransform()
    e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, 100, 100)

    ' Restore graphics state to translated state and fill second

    ' rectangle.
    e.Graphics.Restore(transState)
    e.Graphics.FillRectangle(New SolidBrush(Color.Blue), 0, 0, _
    100, 100)
End Sub

Hinweise

Wenn Sie die Save-Methode einer Graphicsaufrufen, wird ein Informationsblock, der den Status der Graphics enthält, auf einem Stapel platziert. Die Save-Methode gibt eine GraphicsState zurück, die diesen Informationsblock identifiziert. Wenn Sie die identifizierende GraphicsState an die Restore-Methode übergeben, wird der Informationsblock aus dem Stapel entfernt und zum Wiederherstellen des Graphics zum Zeitpunkt des Aufrufs der Save Methode verwendet. Beachten Sie, dass die von einem bestimmten Aufruf der Save-Methode zurückgegebene GraphicsState nur einmal an die Restore-Methode übergeben werden kann.

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

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

Wenn Sie die Restore-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 Save-Methode aus dem Stapel entfernt wurde. Ebenso werden beim Aufrufen der EndContainer-Methode 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.

Gilt für: