Метод Graphics::EndContainer (gdiplusgraphics.h)
Метод Graphics::EndContainer закрывает графический контейнер, который ранее был открыт методом Graphics::BeginContainer .
Синтаксис
Status EndContainer(
[in] GraphicsContainer state
);
Параметры
[in] state
Тип: GraphicsContainer
Значение (ранее возвращаемое Graphics::BeginContainer), определяющее закрываемый контейнер.
Возвращаемое значение
Тип: Состояние
В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .
Если метод завершается сбоем, он возвращает один из других элементов перечисления Status .
Комментарии
При вызове метода Graphics::BeginContainer объекта Graphics информационный блок, содержащий состояние объекта Graphics , помещается в стек. Метод Graphics::BeginContainer возвращает значение, определяющее этот информационный блок. При передаче идентифицирующие значения в метод Graphics::EndContainer информационный блок удаляется из стека и используется для восстановления объекта Graphics до состояния, в которое он находился во время вызова Graphics::BeginContainer .
Контейнеры могут быть вложенными; То есть метод Graphics::BeginContainer можно вызвать несколько раз перед вызовом метода Graphics::EndContainer . Каждый раз при вызове метода 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 |
Header | gdiplusgraphics.h (включая Gdiplus.h) |
Библиотека | Gdiplus.lib |
DLL | Gdiplus.dll |