Graphics.Save Metoda

Definice

Uloží aktuální stav a Graphics identifikuje uložený stav pomocí 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

Návraty

Tato metoda vrátí hodnotu GraphicsState , která představuje uložený stav tohoto Graphicsobjektu .

Příklady

Následující příklad kódu je určen pro použití s model Windows Forms a vyžaduje PaintEventArgse, což je parametr obslužné rutiny Paint události. Kód provede následující akce:

  • Přeloží světovou transformaci formuláře Windows Pomocí vektoru (100, 0).

  • Uloží stav grafiky formuláře.

  • Obnoví světovou transformaci formuláře na identitu (matice identit 2x2 plus nulový vektorový překlad) a vyplní obdélník plným červeným štětcem.

  • Obnoví přeložený grafický stav a vyplní obdélník plným modrým štětcem.

Výsledkem je nepřelládaný červeně vyplněný obdélník vlevo a přeložený modře vyplněný obdélník na pravé straně formuláře.

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

Poznámky

Když zavoláte metodu Save objektu Graphics, informační blok, který obsahuje stav objektu Graphics , se umístí do zásobníku. Metoda Save vrátí objekt GraphicsState , který identifikuje tento informační blok. Když předáte identifikaci GraphicsStateRestore metodě, informační blok se odebere ze zásobníku a použije se k obnovení Graphics do stavu, ve který byl v době Save volání metody. Všimněte si GraphicsState , že vrácené daným voláním Save metody lze metodě předat pouze jednou Restore .

Save Volání metody mohou být vnořená. To znamená, že před voláním metody můžete metodu SaveRestore volat několikrát. Při každém volání Save metody se do zásobníku umístí informační blok a vy obdržíte GraphicsState informační blok pro blok informací. Když předáte jeden z těchto objektů metodě Restore , vrátí se do stavu, Graphics ve který byl v době Save volání metody, která vrátila konkrétní GraphicsState. Informační blok umístěný na zásobníku voláním Save metody je ze zásobníku odebrán a všechny informační bloky umístěné v zásobníku po Save volání metody jsou také odebrány.

BeginContainer Volání metody umístí informační bloky do stejného zásobníku Save jako volání metody. Stejně jako Restore je volání spárováno s voláním Save , EndContainer je volání metody spárováno s voláním BeginContainer metody.

Při volání Restore metody jsou ze zásobníku odebrány všechny informační bloky umístěné na zásobníku ( Save metodou nebo metodou BeginContainer ) po odpovídajícím volání Save metody. Podobně, Když voláte metodu EndContainer , všechny informační bloky umístěné na zásobníku (metodou Save nebo metodou BeginContainer ) po odpovídajícím volání BeginContainer metody jsou odebrány ze zásobníku.

Platí pro