Graphics.Save Método

Definición

Guarda el estado actual de este Graphics e identifica el estado guardado con un GraphicsState.Saves the current state of this Graphics and identifies the saved state with a 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.This method returns a GraphicsState that represents the saved state of this Graphics.

Ejemplos

El siguiente ejemplo de código está diseñado para su uso con Windows Forms y requiere PaintEventArgse, que es un parámetro del controlador de eventos Paint.The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. El código realiza las siguientes acciones:The code performs the following actions:

  • Convierte la transformación universal del formulario de Windows Forms en un vector (100).Translates the world transform of the Windows Form by a vector (100, 0).

  • Guarda el estado de los gráficos del formulario.Saves the graphics state of the form.

  • Restablece la transformación universal del formulario en una identidad (matriz de identidad de 2x2 más una traslación de vector cero) y rellena un rectángulo con un pincel rojo sólido.Resets the world transform of the form to an identity (2x2 identity matrix plus a zero-vector translation) and fills a rectangle with a solid red brush.

  • Restaura el estado de gráficos traducido y rellena un rectángulo con un pincel azul sólido.Restores the translated graphics state and fills a rectangle with a solid blue brush.

El resultado es un rectángulo relleno rojo sin trasladar a la izquierda y un rectángulo relleno azul convertido a la derecha del formulario.The result is an untranslated red-filled rectangle on the left and a translated blue-filled rectangle on the right of the form.

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 una Graphics, se coloca en una pila un bloque de información que contiene el estado de la Graphics.When you call the Save method of a Graphics, an information block that holds the state of the Graphics is put on a stack. El método Save devuelve un GraphicsState que identifica ese bloque de información.The Save method returns a GraphicsState that identifies that information block. 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 la Graphics al estado en el que se encontraba en el momento de la llamada al método Save.When you pass the identifying GraphicsState to the Restore method, the information block is removed from the stack and is used to restore the Graphics to the state it was in at the time of the Save method call. 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.Note that the GraphicsState returned by a given call to the Save method can be passed only once to the Restore method.

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.Calls to the Save method can be nested; that is, you can call the Save method several times before you call the Restore method. 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.Each time you call the Save method, an information block is put on the stack, and you receive a GraphicsState for the information block. Cuando se pasa uno de esos objetos al método Restore, el Graphics se devuelve al estado en el que se encontraba en el momento de la llamada al método Save que devolvía ese GraphicsStatedeterminado.When you pass one of those objects to the Restore method, the Graphics is returned to the state it was in at the time of the Save method call that returned that particular GraphicsState. El bloque de información colocado en la pila mediante el Save llamada al método se quita de la pila, y todos los bloques de información colocados en esa pila después de ese Save llamada al método también se quitan.The information block placed on the stack by that Save method call is removed from the stack, and all information blocks placed on that stack after that Save method call are also removed.

Las llamadas al método BeginContainer colocan bloques de información en la misma pila como llamadas al método Save.Calls to the BeginContainer method place information blocks on the same stack as calls to the Save method. Del mismo modo que una llamada Restore se empareja con una llamada Save, una llamada al método EndContainer se empareja con una llamada al método BeginContainer.Just as a Restore call is paired with a Save call, a EndContainer method call is paired with a BeginContainer method call.

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 que la llamada correspondiente al método Save se quite de la pila.When you call the Restore method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the Save method are removed from the stack. 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 que la llamada correspondiente al método BeginContainer se quite de la pila.Likewise, When you call the EndContainer method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the BeginContainer method are removed from the stack.

Se aplica a