Udostępnij za pośrednictwem


Graphics.Save Metoda

Definicja

Zapisuje bieżący stan tej Graphics i identyfikuje zapisany stan przy użyciu 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

Zwraca

Ta metoda zwraca GraphicsState, która reprezentuje zapisany stan tego 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 (macierz tożsamości 2x2 i translacja wektorów zerowych) i wypełnia prostokąt stałym czerwonym pędzlem.

  • Przywraca przetłumaczony stan grafiki i wypełnia prostokąt niebieskim pędzlem.

Wynik jest nieprzetłumaczonym czerwonym prostokątem po lewej stronie i przetłumaczonym niebieskim prostokątem po prawej stronie formularza.

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

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.

Dotyczy