Bagikan melalui


Graphics.Save Metode

Definisi

Menyimpan status saat ini dari Graphics ini dan mengidentifikasi status tersimpan dengan 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

Mengembalikan

Metode ini mengembalikan GraphicsState yang mewakili status tersimpan dari Graphicsini.

Contoh

Contoh kode berikut dirancang untuk digunakan dengan Windows Forms, dan memerlukan PaintEventArgse, yang merupakan parameter penanganan aktivitas Paint. Kode melakukan tindakan berikut:

  • Menerjemahkan transformasi dunia Formulir Windows oleh vektor (100, 0).

  • Menyimpan status grafis formulir.

  • Mengatur ulang transformasi bentuk dunia ke identitas (matriks identitas 2x2 ditambah terjemahan nol vektor) dan mengisi persegi panjang dengan kuas merah solid.

  • Memulihkan status grafis yang diterjemahkan dan mengisi persegi panjang dengan kuas biru solid.

Hasilnya adalah persegi panjang berwarna merah yang tidak diterjemahkan di sebelah kiri dan persegi panjang yang diterjemahkan berwarna biru di sebelah kanan formulir.

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

Keterangan

Ketika Anda memanggil metode Save dari Graphics, blok informasi yang menyimpan status Graphics diletakkan pada tumpukan. Metode Save mengembalikan GraphicsState yang mengidentifikasi blok informasi tersebut. Ketika Anda meneruskan GraphicsState identifikasi ke metode Restore, blok informasi dihapus dari tumpukan dan digunakan untuk memulihkan Graphics ke status tempatnya berada pada saat panggilan metode Save. Perhatikan bahwa GraphicsState yang dikembalikan oleh panggilan tertentu ke metode Save hanya dapat diteruskan sekali ke metode Restore.

Panggilan ke metode Save dapat ditumpuk; artinya, Anda dapat memanggil metode Save beberapa kali sebelum memanggil metode Restore. Setiap kali Anda memanggil metode Save, blok informasi dimasukkan ke tumpukan, dan Anda menerima GraphicsState untuk blok informasi. Ketika Anda meneruskan salah satu objek tersebut ke metode Restore, Graphics dikembalikan ke status pada saat panggilan metode Save yang mengembalikan GraphicsStatetertentu. Blok informasi yang ditempatkan pada tumpukan oleh panggilan metode Save dihapus dari tumpukan, dan semua blok informasi yang ditempatkan pada tumpukan tersebut setelah panggilan metode Save juga dihapus.

Panggilan ke metode BeginContainer menempatkan blok informasi pada tumpukan yang sama dengan panggilan ke metode Save. Sama seperti panggilan Restore dipasangkan dengan panggilan Save, panggilan metode EndContainer dipasangkan dengan panggilan metode BeginContainer.

Ketika Anda memanggil metode Restore, semua blok informasi yang ditempatkan pada tumpukan (dengan metode Save atau dengan metode BeginContainer) setelah panggilan yang sesuai ke metode Save dihapus dari tumpukan. Demikian juga, Ketika Anda memanggil metode EndContainer, semua blok informasi yang ditempatkan pada tumpukan (dengan metode Save atau dengan metode BeginContainer) setelah panggilan yang sesuai ke metode BeginContainer dihapus dari tumpukan.

Berlaku untuk