Udostępnij za pośrednictwem


Graphics.Restore(GraphicsState) Metoda

Definicja

Przywraca stan tego Graphics do stanu reprezentowanego przez 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, który reprezentuje stan, do którego należy przywrócić ten Graphics.

Przykłady

Poniższy przykład kodu jest przeznaczony do użycia z formularzami Systemu Windows i wymaga PaintEventArgse, który jest parametrem programu obsługi zdarzeń Paint. Kod wykonuje następujące akcje:

  • Przekształca świat formularza systemu Windows przez wektor (100, 0).

  • Zapisuje stan grafiki formularza.

  • Resetuje świat transformacji formularza do tożsamości i wypełnia prostokąt stałym czerwonym pędzlem.

  • Przywraca przetłumaczony stan grafiki i wypełnia drugi prostokąt niebieskim pędzlem.

Wynik jest nieprzetłumaczonym czerwonym prostokątem i przetłumaczonym niebieskim prostokątem.

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

Uwagi

Podczas wywoływania metody SaveGraphicsblok informacji, który przechowuje stan Graphics jest umieszczany na stosie. Metoda Save zwraca GraphicsState, która identyfikuje ten blok informacji. Po przekazaniu GraphicsState identyfikującej do metody Restore blok informacji zostanie usunięty ze stosu i zostanie użyty do przywrócenia Graphics do stanu, w którym znajdował się w czasie wywołania metody Save. Należy pamiętać, że GraphicsState zwrócone przez podane wywołanie metody Save można przekazać tylko raz do metody Restore.

Wywołania metody Save można zagnieżdżać; oznacza to, że można wywołać metodę Save kilka razy przed wywołaniem metody Restore. Za każdym razem, gdy wywołujesz metodę Save, blok informacji jest umieszczany na stosie i otrzymujesz GraphicsState dla bloku informacji. Po przekazaniu jednego z tych obiektów do metody RestoreGraphics jest zwracany do stanu, w którym znajdował się w czasie wywołania metody Save, które zwróciło tę konkretną GraphicsState. Blok informacji umieszczony na stosie przez to wywołanie metody Save jest usuwany ze stosu, a wszystkie bloki informacji umieszczone na tym stosie po tym wywołaniu metody Save również zostaną usunięte.

Wywołania metody BeginContainer umieszczają bloki informacji na tym samym stosie co wywołania metody Save. Podobnie jak wywołanie Restore jest sparowane z wywołaniem Save, wywołanie metody EndContainer jest sparowane z wywołaniem metody BeginContainer.

Po wywołaniu metody Restore wszystkie bloki informacji umieszczone na stosie (przez metodę Save lub metodę BeginContainer) po wywołaniu metody Save zostaną usunięte ze stosu. Podobnie, po wywołaniu metody EndContainer wszystkie bloki informacji umieszczone na stosie (przez metodę Save lub metodę BeginContainer) po odpowiednim wywołaniu metody BeginContainer zostaną usunięte ze stosu.

Dotyczy