Sdílet prostřednictvím


Graphics.Restore(GraphicsState) Metoda

Definice

Obnoví stav tohoto Graphics do stavu reprezentované 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

GraphicsState, který představuje stav, do kterého chcete tento Graphicsobnovit .

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 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řeložený obdélník s červenou výplní 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

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. Podobně když zavoláte EndContainer metodu, 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 BeginContainer se ze zásobníku odeberou.

Platí pro