Graphics.Save Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Salva lo stato corrente di questo Graphics e identifica lo stato salvato 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
Restituisce
Questo metodo restituisce un GraphicsState che rappresenta lo stato salvato di questo Graphics.
Esempio
L'esempio di codice seguente è progettato per l'uso con Windows Form e richiede PaintEventArgse
, che è un parametro del gestore eventi Paint. Il codice esegue le azioni seguenti:
Converte la trasformazione globale di Windows Form da un vettore (100, 0).
Salva lo stato grafico del form.
Reimposta la trasformazione globale del modulo in un'identità (matrice di identità 2x2 più una conversione a vettori zero) e riempie un rettangolo con un pennello rosso a tinta unita.
Ripristina lo stato della grafica tradotta e riempie un rettangolo con un pennello blu a tinta unita.
Il risultato è un rettangolo con riempimento rosso non convertito a sinistra e un rettangolo con riempimento blu a destra della maschera.
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 Save di un Graphics, un blocco di informazioni che contiene lo stato del Graphics viene inserito in uno stack. Il metodo Save restituisce un GraphicsState che identifica tale blocco di informazioni. Quando si passa il GraphicsState di identificazione al metodo Restore, il blocco di informazioni viene rimosso dallo stack e viene usato per ripristinare il Graphics allo stato in cui si trovava al momento della chiamata al metodo Save. Si noti che il GraphicsState restituito da una determinata chiamata al metodo Save può essere passato una sola volta al metodo Restore.
Le chiamate al metodo Save possono essere annidate; ovvero, è possibile chiamare il metodo Save più volte prima di chiamare il metodo Restore. Ogni volta che si chiama il metodo Save, viene inserito un blocco di informazioni nello stack e si riceve un GraphicsState per il blocco di informazioni. Quando si passa uno di questi oggetti al metodo Restore, il Graphics viene restituito allo stato in cui si trovava al momento della chiamata al metodo Save che ha restituito quel particolare GraphicsState. Il blocco di informazioni posizionato nello stack da tale chiamata al metodo Save viene rimosso dallo stack e tutti i blocchi di informazioni posizionati nello stack dopo tale chiamata al metodo Save vengono rimossi.
Le chiamate al metodo BeginContainer inseriscono blocchi di informazioni sullo stesso stack delle chiamate al metodo Save. Proprio come una chiamata Restore è associata a una chiamata Save, una chiamata al metodo EndContainer viene associata a una chiamata al metodo BeginContainer.
Quando si chiama il metodo Restore, tutti i blocchi di informazioni posizionati nello stack (dal metodo Save o dal metodo BeginContainer) dopo la chiamata corrispondente al metodo Save vengono rimossi dallo stack. Analogamente, quando si chiama il metodo EndContainer, tutti i blocchi di informazioni posizionati nello stack (dal metodo Save o dal metodo BeginContainer) dopo la chiamata corrispondente al metodo BeginContainer vengono rimossi dallo stack.