Graphics.Restore(GraphicsState) Metoda

Definice

Obnoví stav této Graphics funkce do stavu reprezentované parametrem 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)

Parametry

gstate
GraphicsState

GraphicsStatepředstavuje stav, do kterého se má obnovit .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 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 a vyplní obdélník plným červeným štětcem.

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

Výsledkem je nepřelládaný červeně vyplněný obdélník a přeložený obdélník s modrou výplní.

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

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ě při volání EndContainer metody se ze zásobníku odeberou 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.

Platí pro