Graphics.Save Graphics.Save Graphics.Save Graphics.Save Method

Definizione

Salva lo stato corrente di questo oggetto Graphics e identifica lo stato salvato con un oggetto 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

Restituisce

Questo metodo restituisce un oggetto GraphicsState che rappresenta lo stato salvato di questo oggetto Graphics.This method returns a GraphicsState that represents the saved state of this Graphics.

Esempi

L'esempio di codice seguente è progettato per l'uso con Windows Forms e richiede PaintEventArgs e, che Paint è un parametro del gestore eventi.The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. Nel codice vengono eseguite le seguenti azioni:The code performs the following actions:

  • Converte la trasformazione globale di Windows Form in base a un vettore (100, 0).Translates the world transform of the Windows Form by a vector (100, 0).

  • Salva lo stato di grafica del modulo.Saves the graphics state of the form.

  • Reimposta la trasformazione globale del form su un'identità (matrice di identità 2x2 più una traduzione a vettore zero) e riempie un rettangolo con un pennello rosso a tinta unita.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.

  • Ripristina lo stato di grafica tradotto e riempie un rettangolo con un pennello blu a tinta unita.Restores the translated graphics state and fills a rectangle with a solid blue brush.

Il risultato è un rettangolo con riempimento rosso non convertito a sinistra e un rettangolo di riempimento blu convertito a destra del form.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

Commenti

Quando si chiama il Save metodo di un Graphicsoggetto, un blocco di informazioni che Graphics include lo stato di viene inserito in uno stack.When you call the Save method of a Graphics, an information block that holds the state of the Graphics is put on a stack. Il Save metodo restituisce un GraphicsState oggetto che identifica il blocco di informazioni.The Save method returns a GraphicsState that identifies that information block. Quando si passa l'oggetto GraphicsState Restore di identificazione al metodo, il blocco Information viene rimosso dallo stack e Graphics viene usato per ripristinare lo stato in Save cui si trovava al momento della chiamata al metodo.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. Si noti che GraphicsState l'oggetto restituito da una determinata chiamata Save al metodo può essere Restore passato solo una volta al metodo.Note that the GraphicsState returned by a given call to the Save method can be passed only once to the Restore method.

Le chiamate al Save metodo possono essere annidate, ovvero è possibile chiamare il Save metodo più volte prima di chiamare il Restore metodo.Calls to the Save method can be nested; that is, you can call the Save method several times before you call the Restore method. Ogni volta che si chiama Save il metodo, viene inserito un blocco di informazioni nello stack e si riceve un GraphicsState oggetto per il blocco Information.Each time you call the Save method, an information block is put on the stack, and you receive a GraphicsState for the information block. Quando si passa uno di questi oggetti Restore al metodo, l'oggetto Graphics viene restituito allo stato in cui si trovava Save al momento della chiamata al metodo che ha restituito quel GraphicsStateparticolare.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. Il blocco di informazioni inserito nello stack dalla Save chiamata al metodo viene rimosso dallo stack e vengono rimossi anche tutti i blocchi di informazioni posizionati nello stack dopo tale Save chiamata al metodo.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.

Le chiamate al BeginContainer metodo posizionano blocchi di informazioni nello stesso stack delle chiamate Save al metodo.Calls to the BeginContainer method place information blocks on the same stack as calls to the Save method. Così come una Restore chiamata viene abbinata a una Save chiamata, una EndContainer chiamata al metodo viene abbinata a BeginContainer una chiamata al metodo.Just as a Restore call is paired with a Save call, a EndContainer method call is paired with a BeginContainer method call.

Quando si chiama il Restore metodo, tutti i blocchi Save di informazioni posizionati nello stack (dal metodo o dal BeginContainer Save metodo) dopo la chiamata corrispondente al metodo vengono rimossi dallo stack.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. Analogamente, quando si chiama EndContainer il metodo, tutti i blocchi di informazioni posizionati nello stack Save (dal metodo o BeginContainer dal BeginContainer metodo) dopo la chiamata corrispondente al metodo vengono rimossi dallo stack.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.

Si applica a