Graphics.EndContainer(GraphicsContainer) 메서드

정의

현재 그래픽 컨테이너를 닫고 Graphics 메서드에 대한 호출에 의해 저장된 상태로 이 BeginContainer()의 상태를 복원합니다.Closes the current graphics container and restores the state of this Graphics to the state saved by a call to the BeginContainer() method.

public:
 void EndContainer(System::Drawing::Drawing2D::GraphicsContainer ^ container);
public void EndContainer (System.Drawing.Drawing2D.GraphicsContainer container);
member this.EndContainer : System.Drawing.Drawing2D.GraphicsContainer -> unit
Public Sub EndContainer (container As GraphicsContainer)

매개 변수

container
GraphicsContainer

이 메서드가 복원하는 컨테이너를 나타내는 GraphicsContainer입니다.GraphicsContainer that represents the container this method restores.

예제

다음 코드 예제는 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:

  • 새 그래픽 컨테이너를 열고 이전 컨테이너를 저장 합니다.Opens a new graphics container and saves the old container.

  • 컨테이너에서 세계 좌표를 변환 합니다.Translates the world coordinates in the container.

  • 새 컨테이너의 (변환 된 좌표)에서 빨간색 사각형을 채웁니다.Fills a red rectangle in the (translated coordinates of the) new container.

  • 새 컨테이너를 닫고 저장 된 컨테이너를 복원 합니다.Closes the new container and restores the saved container.

  • 저장 된 컨테이너의 녹색 사각형 (변환 되지 않은 좌표)을 채웁니다.Fills a green rectangle (to the untranslated coordinates) of the saved container.

결과는 동일한 크기의 빨간색 사각형을 벗어난 녹색 사각형입니다.The result is a green rectangle that overlies a red rectangle of the same size.

public:
   void EndContainerState( PaintEventArgs^ e )
   {
      // Begin graphics container.
      GraphicsContainer^ containerState = e->Graphics->BeginContainer();

      // Translate world transformation.
      e->Graphics->TranslateTransform( 100.0F, 100.0F );

      // Fill translated rectangle in container with red.
      e->Graphics->FillRectangle( gcnew SolidBrush( Color::Red ), 0, 0, 200, 200 );

      // End graphics container.
      e->Graphics->EndContainer( containerState );

      // Fill untransformed rectangle with green.
      e->Graphics->FillRectangle( gcnew SolidBrush( Color::Green ), 0, 0, 200, 200 );
   }
public void EndContainerState(PaintEventArgs e)
{
             
    // Begin graphics container.
    GraphicsContainer containerState = e.Graphics.BeginContainer();
             
    // Translate world transformation.
    e.Graphics.TranslateTransform(100.0F, 100.0F);
             
    // Fill translated rectangle in container with red.
    e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 200, 200);
             
    // End graphics container.
    e.Graphics.EndContainer(containerState);
             
    // Fill untransformed rectangle with green.
    e.Graphics.FillRectangle(new SolidBrush(Color.Green), 0, 0, 200, 200);
}
Public Sub EndContainerState(ByVal e As PaintEventArgs)

    ' Begin graphics container.
    Dim containerState As GraphicsContainer = _
    e.Graphics.BeginContainer()

    ' Translate world transformation.
    e.Graphics.TranslateTransform(100.0F, 100.0F)

    ' Fill translated rectangle in container with red.
    e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, _
    200, 200)

    ' End graphics container.
    e.Graphics.EndContainer(containerState)

    ' Fill untransformed rectangle with green.
    e.Graphics.FillRectangle(New SolidBrush(Color.Green), 0, 0, _
    200, 200)
End Sub

설명

메서드와 함께이 메서드를 사용 BeginContainer 하 여 중첩 된 그래픽 컨테이너를 만듭니다.Use this method with the BeginContainer method to create nested graphics containers. 그래픽 컨테이너는 변환, 클리핑 영역 및 렌더링 속성과 같은 그래픽 상태를 유지 합니다.Graphics containers retain graphics state, such as transformation, clipping region, and rendering properties.

의 메서드를 호출 하면의 BeginContainer Graphics 상태를 포함 하는 정보 블록이 Graphics 스택에 배치 됩니다.When you call the BeginContainer method of a Graphics, an information block that holds the state of the Graphics is put on a stack. BeginContainer메서드는 GraphicsContainer 해당 정보 블록을 식별 하는를 반환 합니다.The BeginContainer method returns a GraphicsContainer that identifies that information block. 식별 개체를 메서드에 전달 하면 EndContainer 정보 블록이 스택에서 제거 되 고가 Graphics 메서드 호출 시의 상태로 복원 하는 데 사용 됩니다 BeginContainer .When you pass the identifying object to the EndContainer 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 BeginContainer method call.

컨테이너는 중첩 될 수 있습니다. 즉, 메서드를 BeginContainer 호출 하기 전에 메서드를 여러 번 호출할 수 있습니다 EndContainer .Containers can be nested; that is, you can call the BeginContainer method several times before you call the EndContainer method. 메서드를 호출할 때마다 BeginContainer 정보 블록이 스택에 배치 되 고 GraphicsContainer 정보 블록에 대 한이 수신 됩니다.Each time you call the BeginContainer method, an information block is put on the stack, and you receive a GraphicsContainer for the information block. 이러한 개체 중 하나를 메서드에 전달 하면 EndContainer GraphicsBeginContainer 특정을 반환 하는 메서드 호출 시의 상태로 반환 됩니다 GraphicsContainer .When you pass one of those objects to the EndContainer method, the Graphics is returned to the state it was in at the time of the BeginContainer method call that returned that particular GraphicsContainer. 해당 메서드 호출로 스택에 배치 된 정보 블록은 BeginContainer 스택에서 제거 되 고 해당 메서드 호출 후에도 해당 스택에 배치 된 모든 정보 블록은 BeginContainer 제거 됩니다.The information block placed on the stack by that BeginContainer method call is removed from the stack, and all information blocks placed on that stack after that BeginContainer method call are also removed.

메서드를 호출 하면 Save 메서드를 호출 하는 것과 동일한 스택에 정보 블록이 추가 BeginContainer 됩니다.Calls to the Save method place information blocks on the same stack as calls to the BeginContainer method. 메서드 호출과 메서드 호출을 쌍으로 연결 하는 것 처럼 메서드 호출은 메서드 EndContainer BeginContainer Restore 호출과 쌍을 이룹니다 Save .Just as an EndContainer method call is paired with a BeginContainer method call, a Restore method call is paired with a Save method call.

메서드를 호출 하면 메서드에 EndContainer Save 대 한 해당 호출이 스택에서 제거 된 모든 정보 블록 (메서드 또는 메서드 BeginContainer ) BeginContainer 이 스택에서 제거 됩니다.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. 마찬가지로 메서드를 호출 하는 경우 메서드에 Restore Save 대 한 해당 호출이 스택에서 제거 된 모든 정보 블록 (메서드 또는 메서드 BeginContainer ) Save 이 스택에서 제거 됩니다.Likewise, 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.

적용 대상