Bagikan melalui


Graphics.Restore(GraphicsState) Metode

Definisi

Memulihkan status ini Graphics 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 ini Graphics.

Contoh

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

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

  • Menyimpan status grafik formulir.

  • Mengatur ulang transformasi dunia bentuk 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 isi 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 Save metode , Graphicsblok informasi yang memegang status Graphics diletakkan pada tumpukan. Metode Save mengembalikan GraphicsState yang mengidentifikasi blok informasi tersebut. Ketika Anda meneruskan GraphicsState identifikasi ke Restore metode , blok informasi dihapus dari tumpukan dan digunakan untuk memulihkan Graphics ke keadaan Save saat panggilan metode. Perhatikan bahwa yang GraphicsState dikembalikan oleh panggilan tertentu ke Save metode hanya dapat diteruskan sekali ke Restore metode .

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

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

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

Berlaku untuk