Graphics.Save Метод

Определение

Сохраняет текущее состояние данного объекта Graphics и связывает сохраненное состояние с объектом 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

Возвращаемое значение

Этот метод возвращает объект GraphicsState, который представляет сохраненное состояние данного объекта Graphics.

Примеры

Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgse, который является параметром обработчика Paint событий. Код выполняет следующие действия.

  • Преобразует преобразование мира формы Windows Form по вектору (100, 0).

  • Сохраняет графическое состояние формы.

  • Сбрасывает преобразование мира формы в удостоверение (матрица идентификаторов 2x2 и преобразование с нулевым вектором) и заполняет прямоугольник сплошной красной кистью.

  • Восстанавливает переведенное состояние графики и заполняет прямоугольник сплошной синей кистью.

Результатом будет прямоугольник с красной заливкой слева и преобразованный прямоугольник с синей заливкой справа от формы.

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

Комментарии

При вызове Save метода объекта информационный Graphicsблок, содержащий состояние Graphics объекта , помещается в стек. Метод Save возвращает объект , GraphicsState идентифицирующий этот информационный блок. При передаче идентификатора GraphicsStateRestore в метод информационный блок удаляется из стека и используется для восстановления Graphics до состояния, в которое он находился на момент Save вызова метода. Обратите внимание, что объект , GraphicsState возвращенный заданным вызовом Save метода, может быть передан методу Restore только один раз.

Save Вызовы метода могут быть вложенными, то есть можно вызвать Save метод несколько раз перед вызовом Restore метода . При каждом вызове Save метода информационный блок помещается в стек и вы получаете GraphicsState для блока информации. При передаче одного из этих объектов Restore в метод возвращается в состояние, Graphics в которое он находился во время Save вызова метода, возвращающего этот конкретный GraphicsStateобъект . Блок сведений, размещенный в стеке вызовом Save этого метода, удаляется из стека, а все информационные блоки, размещенные в этом стеке после Save этого вызова метода, также удаляются.

Вызовы метода размещают информационные BeginContainer блоки в том же стеке, что и вызовы Save метода . Так же, как Restore вызов связан с вызовом Save , EndContainer вызов метода связывается с вызовом BeginContainer метода.

При вызове метода все информационные блоки Restore , размещенные в стеке (методом Save или методом BeginContainer ) после соответствующего Save вызова метода, удаляются из стека. Аналогичным образом при вызове EndContainer метода все информационные блоки, размещенные в стеке (методом Save или методом BeginContainer ) после соответствующего BeginContainer вызова метода, удаляются из стека.

Применяется к