Graphics.Restore(GraphicsState) Metod

Definition

Återställer tillståndet för detta Graphics till tillståndet som representeras av en GraphicsState.

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)

Parametrar

gstate
GraphicsState

GraphicsState som representerar det tillstånd som du vill återställa den här Graphics.

Exempel

Följande kodexempel är utformat för användning med Windows Forms och kräver PaintEventArgse, vilket är en parameter för händelsehanteraren Paint. Koden utför följande åtgärder:

  • Översätter världen transformering av Windows form av en vektor (100, 0).

  • Sparar formulärets grafiktillstånd.

  • Återställer världstransformationen av formuläret till en identitet och fyller en rektangel med en heldragen röd pensel.

  • Återställer det översatta grafiktillståndet och fyller en andra rektangel med en helblå pensel.

Resultatet är en oöversatt rödfylld rektangel och en översatt blå fylld rektangel.

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

Kommentarer

När du anropar Save metoden för en Graphicsplaceras ett informationsblock som innehåller tillståndet för Graphics en stack. Metoden Save returnerar ett GraphicsState som identifierar informationsblocket. När du skickar identifieringen GraphicsStateRestore till metoden tas informationsblocket bort från stacken och används för att återställa Graphics till det tillstånd som den befann sig i vid tidpunkten för metodanropet Save . Observera att det GraphicsState som returneras av ett visst anrop till Save metoden bara kan skickas en gång till Restore metoden.

Anrop till Save metoden kan kapslas, det vill säga du kan anropa Save metoden flera gånger innan du anropar Restore metoden. Varje gång du anropar Save metoden placeras ett informationsblock på stacken och du får ett GraphicsState för informationsblocket. När du skickar ett av dessa objekt till Restore metoden Graphics returneras till det tillstånd som det befann sig i vid tidpunkten för metodanropet Save som returnerade just GraphicsStatedet . Informationsblocket som placeras på stacken med det Save metodanropet tas bort från stacken och alla informationsblock som placeras på stacken efter metodanropet Save tas också bort.

Anrop till BeginContainer metoden placerar informationsblock i samma stack som anrop till Save metoden. Precis som ett Restore anrop paras ihop med ett Save anrop paras ett EndContainer metodanrop ihop med ett BeginContainer metodanrop.

När du anropar Restore metoden tas alla informationsblock som placerats på stacken Save (med metoden eller BeginContainer metoden) efter motsvarande anrop till Save metoden bort från stacken. På samma sätt, när du anropar EndContainer metoden, tas alla informationsblock som placerats på stacken Save (med metoden eller BeginContainer metoden) efter motsvarande anrop till BeginContainer metoden bort från stacken.

Gäller för