다음을 통해 공유


Graphics::EndContainer 메서드(gdiplusgraphics.h)

Graphics::EndContainer 메서드는 Graphics::BeginContainer 메서드에서 이전에 연 그래픽 컨테이너를 닫습니다.

구문

Status EndContainer(
  [in] GraphicsContainer state
);

매개 변수

[in] state

형식: GraphicsContainer

닫을 컨테이너를 식별하는 값(이전에 Graphics::BeginContainer에서 반환됨)

반환 값

형식: 상태

메서드가 성공하면 Status 열거형의 요소인 Ok를 반환합니다.

메서드가 실패하면 Status 열거형의 다른 요소 중 하나를 반환합니다.

설명

Graphics 개체의 Graphics::BeginContainer 메서드를 호출하면 Graphics 개체의 상태를 보유하는 정보 블록이 스택에 배치됩니다. Graphics::BeginContainer 메서드는 해당 정보 블록을 식별하는 값을 반환합니다. 식별 값을 Graphics::EndContainer 메서드에 전달하면 정보 블록이 스택에서 제거되고 Graphics::BeginContainer 호출 당시의 상태로 Graphics 개체를 복원하는 데 사용됩니다.

컨테이너를 중첩할 수 있습니다. 즉, Graphics::EndContainer 메서드를 호출하기 전에 Graphics::BeginContainer 메서드를 여러 번 호출할 수 있습니다. Graphics::BeginContainer 메서드를 호출할 때마다 정보 블록이 스택에 배치되고 정보 블록에 대한 식별자가 표시됩니다. 해당 식별자 중 하나를 Graphics::EndContainer 메서드에 전달하면 Graphics 개체는 해당 특정 식별자를 반환한 Graphics::BeginContainer 호출 당시의 상태로 반환됩니다. Graphics::BeginContainer 호출에 의해 스택에 배치된 정보 블록이 스택에서 제거되고 해당 Graphics::BeginContainer 호출 이후에 해당 스택에 배치된 모든 정보 블록도 제거됩니다.

Graphics::Save 메서드를 호출하면 Graphics::BeginContainer 메서드에 대한 호출과 동일한 스택에 정보 블록이 배치됩니다. Graphics::EndContainer 호출이 Graphics::BeginContainer 호출과 쌍을 이루는 것처럼 Graphics::Restore 호출은 Graphics::Save 호출과 쌍을 이릅니다.

주의Graphics::EndContainer를 호출하면 그래픽::BeginContainer에 대한 해당 호출 후 스택에 배치된 모든 정보 블록(Graphics::Save 또는 Graphics::BeginContainer)이 스택에서 제거됩니다. 마찬가지로 Graphics::Restore를 호출하면 Graphics::Save에 대한 해당 호출 후 스택에 배치된 모든 정보 블록(Graphics::Save 또는 Graphics::BeginContainer)이 스택에서 제거됩니다.
 

예제

다음 예제에서는 Graphics 개체를 만들고 클리핑 영역을 설정합니다. 코드는 컨테이너를 시작하고 컨테이너에 대한 추가 클리핑 영역을 설정합니다. 코드는 직사각형을 두 번 채웁니다. 즉, 컨테이너 내부에 한 번, 컨테이너 외부에서 한 번( Graphics::EndContainer 호출 후)

VOID Example_EndContainer(HDC hdc)
{
   Graphics graphics(hdc);

   // Set the clipping region for the Graphics object.
   graphics.SetClip(Rect(10, 10, 150, 150));

   // Begin a graphics container.
   GraphicsContainer container = graphics.BeginContainer();

   // Set an additional clipping region for the container.
   graphics.SetClip(Rect(100, 50, 100, 75));

   // Fill a red rectangle in the container.
   SolidBrush redBrush(Color(255, 255, 0, 0));
   graphics.FillRectangle(&redBrush, 0, 0, 200, 200);

   // End the container, and fill the same rectangle with blue. 
   graphics.EndContainer(container);
   SolidBrush blueBrush(Color(128, 0, 0, 255));
   graphics.FillRectangle(&blueBrush, 0, 0, 200, 200);

   // Set the clipping region to infinite, and draw 
   // the two previous clipping regions.
   graphics.ResetClip();
   Pen blackPen(Color(255, 0, 0, 0), 2.0f);
   graphics.DrawRectangle(&blackPen, 10, 10, 150, 150);
   graphics.DrawRectangle(&blackPen, 100, 50, 100, 75);
}

요구 사항

   
지원되는 최소 클라이언트 Windows XP, Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 gdiplusgraphics.h(Gdiplus.h 포함)
라이브러리 Gdiplus.lib
DLL Gdiplus.dll

참고 항목

그래픽

그래픽 컨테이너

그래픽::BeginContainer

그래픽::복원

그래픽::저장

그래픽 컨테이너 사용