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 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 del mundo del formulario en 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 relleno rojo sin traducir a la izquierda y un rectángulo traducido 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 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