Graphics.Save Metoda

Definice

Uloží aktuální stav a Graphics identifikuje uložený stav pomocí funkce 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í GraphicsState hodnotu, která představuje uložený stav tohoto Graphics.

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 události Paint. Kód provede následující akce:

  • Přeloží světovou transformaci Windows Form vektorem (100, 0).

  • Uloží grafický stav formuláře.

  • Obnoví světovou transformaci formuláře na identitu (2x2 identity matrix 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řeložitý červený vyplněný obdélník vlevo a přeložený modrý obdélník vpravo od 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 SaveGraphics, informační blok, který obsahuje stav Graphics je vložen do zásobníku. Metoda Save vrátí chybu GraphicsState , která identifikuje tento informační blok. Když předáte identifikaci GraphicsStateRestore metodě, informační blok se odebere ze zásobníku a slouží k obnovení Graphics stavu, ve který byl v době Save volání metody. Všimněte si, že GraphicsState vrácené daným voláním Save metody lze metodě předat pouze jednou Restore .

Volání metody Save lze vnořit. To znamená, že metodu Save můžete volat několikrát předtím, než metodu Restore zavoláte. Pokaždé, když zavoláte metodu Save , se do zásobníku vloží informační blok a obdržíte GraphicsState 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 tento konkrétní GraphicsState. Blok informací umístěný do zásobníku voláním Save této metody se odebere ze zásobníku a odeberou se také všechny informační bloky umístěné na daném Save zásobníku po volání metody.

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

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

Platí pro