Compartir vía


Graphics.Restore(GraphicsState) Método

Definición

Restaura el estado de este Graphics al estado representado por un 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)

Parámetros

gstate
GraphicsState

GraphicsState que representa el estado al que se va a restaurar este Graphics.

Ejemplos

El ejemplo de código siguiente está diseñado para su uso con Windows Forms y requiere PaintEventArgse, que es un parámetro del controlador de eventos Paint. El código realiza las siguientes acciones:

  • Traduce la transformación mundial de Windows Form por un vector (100, 0).

  • Guarda el estado gráfico del formulario.

  • Restablece la transformación mundial del formulario en una identidad y rellena un rectángulo con un pincel rojo sólido.

  • Restaura el estado de gráfico traducido y rellena un segundo rectángulo con un pincel azul sólido.

El resultado es un rectángulo de relleno rojo sin traducir y un rectángulo de relleno azul traducido.

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

Comentarios

Cuando se llama al método Save de un Graphics, se coloca un bloque de información que contiene el estado del Graphics en una pila. El método Save devuelve un GraphicsState que identifica ese bloque de información. Al pasar el GraphicsState de identificación al método Restore, el bloque de información se quita de la pila y se usa para restaurar el Graphics al estado en el que se encontraba en el momento de la llamada al método Save. Tenga en cuenta que el GraphicsState devuelto por una llamada determinada al método Save solo se puede pasar una vez al método Restore.

Las llamadas al método Save se pueden anidar; Es decir, puede llamar al método Save varias veces antes de llamar al método Restore. Cada vez que se llama al método Save, se coloca un bloque de información en la pila y se recibe un GraphicsState para el bloque de información. Al pasar uno de esos objetos al método Restore, el Graphics se devuelve al estado en el que estaba en el momento de la llamada al método Save que devolvió ese GraphicsStateconcreto. El bloque de información colocado en la pila por ese Save llamada al método se quita de la pila y también se quitan todos los bloques de información colocados en esa pila después de esa llamada al método Save.

Las llamadas al método BeginContainer colocan bloques de información en la misma pila que las llamadas al método Save. Al igual que una llamada de Restore se empareja con una llamada de Save, una llamada de método EndContainer se empareja con una llamada de método BeginContainer.

Cuando se llama al método Restore, todos los bloques de información colocados en la pila (por el método Save o por el método BeginContainer) después de la llamada correspondiente al método Save se quitan de la pila. Del mismo modo, al llamar al método EndContainer, todos los bloques de información colocados en la pila (por el método Save o por el método BeginContainer) después de la llamada correspondiente al método BeginContainer se quitan de la pila.

Se aplica a