Aracılığıyla paylaş


Graphics.Save Yöntem

Tanım

Bu Graphics geçerli durumunu kaydeder ve kaydedilen durumu bir GraphicsStateile tanımlar.

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

Döndürülenler

Bu yöntem, bu Graphicskaydedilen durumunu temsil eden bir GraphicsState döndürür.

Ö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 (2x2 kimlik matrisi artı sıfır vektör çevirisi) ve dikdörtgeni düz kırmızı fırçayla doldurur.

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

Sonuç, sol tarafta çevrilmemiş kırmızı dolgulu bir dikdörtgen ve formun sağ tarafında çevrilmiş mavi dolgulu bir dikdörtgendir.

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

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