Graphics.Restore(GraphicsState) Yöntem

Tanım

Bu Graphics durumunu bir GraphicsStateile temsil edilen duruma geri yükler.

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)

Parametreler

gstate
GraphicsState

bu Graphicsgeri yükleneceği durumu temsil eden GraphicsState.

Örnekler

Aşağıdaki kod örneği Windows Forms ile kullanılmak üzere tasarlanmıştır ve Paint olay işleyicisinin bir parametresi olan PaintEventArgsegerektirir. Kod aşağıdaki eylemleri gerçekleştirir:

  • Windows Formunun dünya dönüşümünü bir vektör (100, 0) ile çevirir.

  • Formun grafik durumunu kaydeder.

  • Formun dünya dönüşümünü bir kimliğe sıfırlar ve dikdörtgeni düz kırmızı bir fırçayla doldurur.

  • Çevrilmiş grafik durumunu geri yükler ve ikinci bir dikdörtgeni düz mavi fırçayla doldurur.

Sonuç, çevrilmemiş kırmızı dolgulu bir dikdörtgen ve çevrilmiş mavi dolgulu bir dikdörtgendir.

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

Açıklamalar

bir GraphicsSave yöntemini çağırdığınızda, Graphics durumunu tutan bir bilgi bloğu bir yığına konur. Save yöntemi, bu bilgi bloğunu tanımlayan bir GraphicsState döndürür. Tanımlayıcı GraphicsStateRestore yöntemine geçirdiğinizde, bilgi bloğu yığından kaldırılır ve GraphicsSave yöntem çağrısı sırasında olduğu duruma geri yüklemek için kullanılır. Save yöntemine verilen bir çağrı tarafından döndürülen GraphicsStateRestore yöntemine yalnızca bir kez geçirilebileceğini unutmayın.

Save yöntemine yapılan çağrılar iç içe olabilir; başka bir ifadeyle, Restore yöntemini çağırmadan önce Save yöntemini birkaç kez çağırabilirsiniz. Save yöntemini her çağırdığınızda, yığına bir bilgi bloğu eklenir ve bilgi bloğu için bir GraphicsState alırsınız. Bu nesnelerden birini Restore yöntemine geçirdiğinizde, Graphics ilgili GraphicsStatedöndüren Save yöntemi çağrısı sırasında olduğu duruma döndürülür. Bu Save yöntem çağrısı tarafından yığına yerleştirilen bilgi bloğu yığından kaldırılır ve bu Save yöntem çağrısından sonra bu yığına yerleştirilen tüm bilgi blokları da kaldırılır.

BeginContainer yöntemine yapılan çağrılar, bilgi bloklarını Save yöntemine yapılan çağrılar ile aynı yığına yerleştirir. Restore çağrısının bir Save çağrısıyla eşlendiği gibi, EndContainer yöntem çağrısı da BeginContainer yöntem çağrısıyla eşleştirilir.

Restore yöntemini çağırdığınızda, Save yöntemine karşılık gelen çağrıdan sonra yığına yerleştirilen tüm bilgi blokları (Save yöntemi veya BeginContainer yöntemi tarafından) yığından kaldırılır. Benzer şekilde, EndContainer yöntemini çağırdığınızda, BeginContainer yöntemine karşılık gelen çağrıdan sonra yığına yerleştirilen tüm bilgi blokları (Save yöntemi veya BeginContainer yöntemi tarafından) yığından kaldırılır.

Şunlara uygulanır