Graphics.Save Graphics.Save Graphics.Save Graphics.Save Method

정의

Graphics의 현재 상태를 저장하고 GraphicsState로 저장된 상태를 확인합니다.Saves the current state of this Graphics and identifies the saved state with a 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를 반환합니다.This method returns a GraphicsState that represents the saved state of 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 폼의 세계 변환을 벡터 (100, 0)로 변환합니다.Translates the world transform of the Windows Form by a vector (100, 0).

  • 폼의 그래픽 상태를 저장합니다.Saves the graphics state of the form.

  • Id (항등 매트릭스를 2x2 + 0 벡터 변환)를 폼의 세계 변환을 다시 설정 하 고 빨간색 단색 브러시를 사용 하 여 사각형을 채웁니다.Resets the world transform of the form to an identity (2x2 identity matrix plus a zero-vector translation) and fills a rectangle with a solid red brush.

  • 변환된 된 그래픽 상태를 복원 하 고 사각형 파랑 브러시를 단색으로 채웁니다.Restores the translated graphics state and fills a rectangle with a solid blue brush.

결과 왼쪽에는 번역 되지 않은 빨강으로 채워진 사각형 및 폼의 오른쪽에 번역 된 파란색으로 채워진 사각형입니다.The result is an untranslated red-filled rectangle on the left and a translated blue-filled rectangle on the right of the form.

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 스택에 배치 됩니다.When you call the Save method of a Graphics, an information block that holds the state of the Graphics is put on a stack. 합니다 Save 메서드가 반환 되는 GraphicsState 정보 블록을 식별 하는 합니다.The Save method returns a GraphicsState that identifies that information block. 전달 하는 경우를 식별 GraphicsStateRestore 메서드 정보 블록 스택에서 제거 되 고 복원 하는 데 사용 되는 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 메서드를 중첩 될 수 있습니다; 그리고 즉, 호출할 수 있습니다는 Save 메서드를 호출 하기 전에 여러 번을 Restore 메서드.Calls 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.

에 대 한 호출을 BeginContainer 메서드 호출 스택의 동일 위치 정보 블록을 Save 메서드.Calls 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.

적용 대상