Метод 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::EndContainer все информационные блоки, размещенные в стеке (с помощью Graphics::Save или Graphics::BeginContainer) после соответствующего вызова Graphics::BeginContainer , удаляются из стека. Аналогичным образом при вызове Graphics::Restore все информационные блоки, размещенные в стеке (с помощью Graphics::Save или Graphics::BeginContainer) после соответствующего вызова 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

См. также раздел

Графика

Графические контейнеры

Graphics::BeginContainer

Graphics::Restore

Графика::Сохранить

Использование графических контейнеров