Graphics.Restore(GraphicsState) Метод

Определение

Восстанавливает состояние данного объекта Graphics, возвращая его к состоянию, представленному объектом GraphicsState.Restores the state of this Graphics to the state represented by a 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)

Параметры

gstate
GraphicsState

Объект GraphicsState, представляющий состояние, в которое восстанавливается данный объект Graphics.GraphicsState that represents the state to which to restore this Graphics.

Примеры

Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgs e, что Paint является параметром обработчика событий.The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. Код выполняет следующие действия.The code performs the following actions:

  • Преобразует универсальное преобразование Windows Form в вектор (100, 0).Translates the world transform of the Windows Form by a vector (100, 0).

  • Сохраняет графическое состояние формы.Saves the graphics state of the form.

  • Сбрасывает универсальное преобразование формы в удостоверение и заполняет прямоугольник сплошной красной кистью.Resets the world transform of the form to an identity and fills a rectangle with a solid red brush.

  • Восстанавливает переведенное состояние графики и заполняет второй прямоугольник сплошной синей кистью.Restores the translated graphics state and fills a second rectangle with a solid blue brush.

Результатом является непереведенный красный прямоугольник и переведенный прямоугольник с заливкой синим цветом.The result is an untranslated red-filled rectangle and a translated blue-filled rectangle.

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

Комментарии

При вызове Save метода Graphicsобъекта информационный блок, Graphics содержащий состояние, помещается в стек.When you call the Save method of a Graphics, an information block that holds the state of the Graphics is put on a stack. Метод возвращает объект GraphicsState , который идентифицирует этот блок информации. SaveThe Save method returns a GraphicsState that identifies that information block. При GraphicsState передаче идентификации Restore в метод информационный блок удаляется из стека и используется для восстановления Graphics до состояния, в котором Save оно находилось в момент вызова метода.When you pass the identifying GraphicsState to the Restore method, the information block is removed from the stack and is used to restore the Graphics to the state it was in at the time of the Save method call. Обратите внимание GraphicsState , что объект, возвращаемый данным Save вызовом метода, может быть Restore передан методу только один раз.Note that the GraphicsState returned by a given call to the Save method can be passed only once to the Restore method.

Вызовы метода могут быть вложенными, то есть можно Save вызвать метод несколько Restore раз перед вызовом метода. SaveCalls to the Save method can be nested; that is, you can call the Save method several times before you call the Restore method. Каждый раз при вызове Save метода информационный блок помещается в стек, а GraphicsState для информационного блока получается.Each time you call the Save method, an information block is put on the stack, and you receive a GraphicsState for the information block. При передаче одного из этих объектов Restore в метод Graphics возвращается в состояние, в котором оно находилось в момент Save вызова метода, который возвращал эту конкретную GraphicsStateфункцию.When you pass one of those objects to the Restore method, the Graphics is returned to the state it was in at the time of the Save method call that returned that particular GraphicsState. Информационный блок, помещенный в стек Save этим вызовом метода, удаляется из стека, а все информационные блоки, помещенные в этот стек после этого Save вызова метода, также удаляются.The information block placed on the stack by that Save method call is removed from the stack, and all information blocks placed on that stack after that Save method call are also removed.

Вызовы метода размещают информационные блоки в том же стеке, что и вызовы Save метода. BeginContainerCalls to the BeginContainer method place information blocks on the same stack as calls to the Save method. Так же, Restore как вызов сопряжен Save с вызовом, EndContainer вызов метода объединяется с BeginContainer вызовом метода.Just as a Restore call is paired with a Save call, a EndContainer method call is paired with a BeginContainer method call.

При вызове Restore метода все информационные блоки, размещенные в стеке ( Save методом или BeginContainer Save методом) после соответствующего вызова метода, удаляются из стека.When you call the Restore method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the Save method are removed from the stack. Аналогично, при вызове EndContainer метода все информационные блоки, размещенные в стеке ( Save методом или BeginContainer BeginContainer методом) после соответствующего вызова метода, удаляются из стека.Likewise, when you call the EndContainer method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the BeginContainer method are removed from the stack.

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