Graphics.Restore(GraphicsState) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przywraca stan tego Graphics do stanu reprezentowanego przez GraphicsState.
public:
void Restore(System::Drawing::Drawing2D::GraphicsState ^ gstate);
public void Restore (System.Drawing.Drawing2D.GraphicsState gstate);
member this.Restore : System.Drawing.Drawing2D.GraphicsState -> unit
Public Sub Restore (gstate As GraphicsState)
Parametry
- gstate
- GraphicsState
GraphicsState, który reprezentuje stan, do którego należy przywrócić ten Graphics.
Przykłady
Poniższy przykład kodu jest przeznaczony do użycia z formularzami Systemu Windows i wymaga PaintEventArgse
, który jest parametrem programu obsługi zdarzeń Paint. Kod wykonuje następujące akcje:
Przekształca świat formularza systemu Windows przez wektor (100, 0).
Zapisuje stan grafiki formularza.
Resetuje świat transformacji formularza do tożsamości i wypełnia prostokąt stałym czerwonym pędzlem.
Przywraca przetłumaczony stan grafiki i wypełnia drugi prostokąt niebieskim pędzlem.
Wynik jest nieprzetłumaczonym czerwonym prostokątem i przetłumaczonym niebieskim prostokątem.
public:
void SaveRestore2( 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 SaveRestore2(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 SaveRestore2(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
Uwagi
Podczas wywoływania metody SaveGraphicsblok informacji, który przechowuje stan Graphics jest umieszczany na stosie. Metoda Save zwraca GraphicsState, która identyfikuje ten blok informacji. Po przekazaniu GraphicsState identyfikującej do metody Restore blok informacji zostanie usunięty ze stosu i zostanie użyty do przywrócenia Graphics do stanu, w którym znajdował się w czasie wywołania metody Save. Należy pamiętać, że GraphicsState zwrócone przez podane wywołanie metody Save można przekazać tylko raz do metody Restore
.
Wywołania metody Save można zagnieżdżać; oznacza to, że można wywołać metodę Save kilka razy przed wywołaniem metody Restore. Za każdym razem, gdy wywołujesz metodę Save, blok informacji jest umieszczany na stosie i otrzymujesz GraphicsState dla bloku informacji. Po przekazaniu jednego z tych obiektów do metody RestoreGraphics jest zwracany do stanu, w którym znajdował się w czasie wywołania metody Save, które zwróciło tę konkretną GraphicsState. Blok informacji umieszczony na stosie przez to wywołanie metody Save jest usuwany ze stosu, a wszystkie bloki informacji umieszczone na tym stosie po tym wywołaniu metody Save również zostaną usunięte.
Wywołania metody BeginContainer umieszczają bloki informacji na tym samym stosie co wywołania metody Save. Podobnie jak wywołanie Restore jest sparowane z wywołaniem Save, wywołanie metody EndContainer jest sparowane z wywołaniem metody BeginContainer.
Po wywołaniu metody Restore wszystkie bloki informacji umieszczone na stosie (przez metodę Save lub metodę BeginContainer) po wywołaniu metody Save zostaną usunięte ze stosu. Podobnie, po wywołaniu metody EndContainer wszystkie bloki informacji umieszczone na stosie (przez metodę Save lub metodę BeginContainer) po odpowiednim wywołaniu metody BeginContainer zostaną usunięte ze stosu.