Graphics.Save Metod

Definition

Sparar det aktuella tillståndet för detta Graphics och identifierar det sparade tillståndet med .GraphicsState

public:
 System::Drawing::Drawing2D::GraphicsState ^ Save();
public System.Drawing.Drawing2D.GraphicsState Save();
member this.Save : unit -> System.Drawing.Drawing2D.GraphicsState
Public Function Save () As GraphicsState

Returer

Den här metoden returnerar ett GraphicsState som representerar det sparade tillståndet för 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ärldsomformningen av formuläret till en identitet (2x2-identitetsmatris plus en nollvektoröversättning) och fyller en rektangel med en helröd pensel.

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

Resultatet är en oöversatt rödfylld rektangel till vänster och en översatt blå fylld rektangel till höger om formuläret.

public:
   void SaveRestore3( 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 SaveRestore3(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 SaveRestore3(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 tas alla informationsblock som placeras på stacken (med EndContainer metoden eller Save metoden) efter motsvarande anrop till BeginContainer metoden bort från stacken när du anropar BeginContainer metoden.

Gäller för