Compartir a través de


Graphics.Save Método

Definición

Guarda el estado actual de este Graphics e identifica el estado guardado con un GraphicsState.

public:
 System::Drawing::Drawing2D::GraphicsState ^ Save();
public System.Drawing.Drawing2D.GraphicsState Save ();
member this.Save : unit -> System.Drawing.Drawing2D.GraphicsState
Public Function Save () As GraphicsState

Devoluciones

Este método devuelve un GraphicsState que representa el estado guardado de 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 a una identidad (matriz de identidad 2x2 más una traducción de vectores cero) y rellena un rectángulo con un pincel rojo sólido.

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

El resultado es un rectángulo de color rojo sin traducir a la izquierda y un rectángulo traducido con relleno azul a la derecha del formulario.

public:
   void SaveRestore3( 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 SaveRestore3(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 SaveRestore3(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, cuando se llama 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