Graphics.Restore(GraphicsState) Método

Definición

Restaura el estado de este Graphics en el 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 Paint controlador de eventos. El código realiza las siguientes acciones:

  • Traduce la transformación del mundo de Windows Forms 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 Save método de , Graphicsun bloque de información que contiene el estado de Graphics se coloca en una pila. El Save método devuelve un GraphicsState objeto que identifica ese bloque de información. Cuando se pasa la identificación GraphicsState al Restore método , el bloque de información se quita de la pila y se usa para restaurar al Graphics estado en el que estaba en el momento de la llamada al Save método. Tenga en cuenta que el GraphicsState devuelto por una llamada determinada al Save método solo se puede pasar una vez al Restore método .

Las llamadas al Save método se pueden anidar; es decir, puede llamar al Save método varias veces antes de llamar al Restore método . Cada vez que se llama al Save método , se coloca un bloque de información en la pila y se recibe un GraphicsState para el bloque de información. Cuando se pasa uno de esos objetos al Restore método , Graphics se devuelve al estado en el que estaba en el momento de la Save llamada al método que devolvió ese determinado GraphicsState. El bloque de información colocado en la pila por esa Save llamada de 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 Save llamada al método.

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

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

Se aplica a