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 개체를 만들고 클리핑 영역을 설정합니다. 코드는 컨테이너를 시작하고 컨테이너에 대한 추가 클리핑 영역을 설정합니다. 코드는 직사각형을 두 번 채웁니다. 즉, 컨테이너 내부에 한 번, 컨테이너 외부에서 한 번( 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 |