Bagikan melalui


Graphics.Restore(GraphicsState) Metode

Definisi

Memulihkan status Graphics ini ke status yang diwakili oleh 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)

Parameter

gstate
GraphicsState

GraphicsState yang mewakili status untuk memulihkan 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 menjadi identitas dan mengisi persegi panjang dengan kuas merah solid.

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

Hasilnya adalah persegi panjang berwarna merah yang tidak diterjemahkan dan persegi panjang yang diterjemahkan dengan isian biru.

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

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