Sdílet prostřednictvím


Graphics.Save Metoda

Definice

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

Příklady

Následující příklad kódu je určený pro použití s 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 formuláře 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

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

Volání metody Save lze vnořit; to znamená, že metodu Save můžete volat několikrát předtím, než zavoláte metodu Restore. Při každém volání metody Save se do zásobníku vloží informační blok a obdržíte GraphicsState bloku informací. Když předáte jeden z těchto objektů do Restore metoda, Graphics se vrátí do stavu, ve který byl v době volání metody Save, která vrátila konkrétní GraphicsState. Informační blok umístěný do zásobníku voláním metody Save je ze zásobníku odebrán a všechny informační bloky umístěné v daném zásobníku po volání metody Save se také odeberou.

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

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

Platí pro