Graphics.Save Metodo

Definizione

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

Esempio

L'esempio di codice seguente è progettato per l'uso con Windows Forms e richiede PaintEventArgse, che è un parametro del Paint gestore eventi. Il codice esegue le azioni seguenti:

  • Converte la trasformazione mondiale di Windows Form in base a un vettore (100, 0).

  • Salva lo stato grafico del modulo.

  • Reimposta la trasformazione del mondo del modulo in un'identità (matrice di identità 2x2 e una traduzione vettoriale zero) e riempie un rettangolo con un pennello rosso solido.

  • Ripristina lo stato della grafica tradotta e riempie un rettangolo con un pennello blu solido.

Il risultato è un rettangolo di riempimento rosso non tradotto a sinistra e un rettangolo con riempimento blu tradotto a destra del modulo.

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 metodo di un Graphicsoggetto , un blocco di informazioni che contiene lo Save stato dell'oggetto Graphics viene inserito in uno stack. Il Save metodo restituisce un oggetto GraphicsState che identifica tale blocco di informazioni. Quando si passa l'identificazione GraphicsState al Restore metodo, il blocco di informazioni viene rimosso dallo stack e viene usato per ripristinare lo Graphics stato in cui si trovava al momento della chiamata al Save metodo. Si noti che l'oggetto GraphicsState restituito da una determinata chiamata al Save metodo può essere passato una sola volta al Restore metodo.

Le chiamate al Save metodo possono essere annidate, ovvero è possibile chiamare il metodo più volte prima di chiamare il SaveRestore metodo. Ogni volta che si chiama il Save metodo, un blocco di informazioni viene inserito nello stack e viene visualizzato un GraphicsState oggetto per il blocco informazioni. Quando si passa uno di questi oggetti Restore al metodo, viene Graphics restituito allo stato in cui si trovava al momento della Save chiamata al metodo che ha restituito tale particolare GraphicsState. Il blocco di informazioni inserito nello stack da tale Save chiamata al metodo viene rimosso dallo stack e tutti i blocchi di informazioni inseriti nello stack dopo la Save chiamata al metodo vengono rimossi.

Le chiamate al BeginContainer metodo inseriscono blocchi di informazioni sullo stesso stack delle chiamate al Save metodo. Proprio come una Restore chiamata viene associata a una Save chiamata, una EndContainer chiamata al metodo viene associata a una BeginContainer chiamata al metodo.

Quando si chiama il Restore metodo, tutti i blocchi di informazioni inseriti nello stack (dal Save metodo o BeginContainer dal metodo) dopo la chiamata Save corrispondente al metodo vengono rimossi dallo stack. Analogamente, quando si chiama il EndContainer metodo, tutti i blocchi di informazioni inseriti nello stack (dal Save metodo o BeginContainer dal metodo) dopo la chiamata corrispondente al BeginContainer metodo vengono rimossi dallo stack.

Si applica a