Метод Graphics::BeginContainer(constRectF&,constRectF&;Unit) (gdiplusgraphics.h)

Метод Graphics::BeginContainer запускает новый графический контейнер.

Синтаксис

GraphicsContainer BeginContainer(
  const RectF & dstrect,
  const RectF & srcrect,
  Unit          unit
);

Параметры

dstrect

Ссылка на прямоугольник, который вместе с srcrect указывает преобразование для контейнера.

srcrect

Ссылка на прямоугольник, который вместе с dstrect указывает преобразование для контейнера.

unit

Единица измерения для контейнера.

Возвращаемое значение

Тип: Тип: GraphicsContainer

Этот метод возвращает значение, определяющее контейнер.

Комментарии

Используйте этот метод для создания вложенных графических контейнеров. Графические контейнеры используются для сохранения графического состояния, например преобразований, обрезки областей и различных свойств отрисовки.

Метод Graphics::BeginContainer возвращает значение типа GraphicsContainer. Завершив использование контейнера, передайте это значение в метод Graphics::EndContainer . Тип данных GraphicsContainer определен в Gdiplusenums.h.

Параметры dstrect и srcrect указывают преобразование. Это преобразование, которое при применении к srcrect приводит к dstrect.

При вызове метода Graphics::BeginContainer объекта Graphics информационный блок, содержащий состояние объекта Graphics , помещается в стек. Метод Graphics::BeginContainer возвращает значение, определяющее этот информационный блок. При передаче идентифицирующие значения в метод Graphics::EndContainer информационный блок удаляется из стека и используется для восстановления объекта Graphics до состояния, в которое он находился во время вызова Graphics::BeginContainer .

Контейнеры могут быть вложенными; То есть метод Graphics::BeginContainer можно вызвать несколько раз перед вызовом метода Graphics::EndContainer . Каждый раз при вызове метода Graphics::BeginContainer в стек помещается информационный блок, и вы получаете идентификатор блока сведений. При передаче одного из этих идентификаторов в метод Graphics::EndContainer объект 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 , удаляются из стека.

Дополнительные сведения о графических контейнерах см. в разделе Вложенные графические контейнеры.

Примеры

В следующем примере вызывается метод BeginContainer для создания графического контейнера. Код задает преобразование для контейнера путем передачи двух прямоугольников в метод BeginContainer . Код вызывает Graphics::FillEllipse дважды: один раз внутри контейнера и один раз вне контейнера (после вызова Graphics::EndContainer).

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

   // Define a translation and scale transform for the container.
   RectF srcRect(0, 0, 200, 100);
   RectF destRect(100, 100, 200, 200);

   // Create a graphics container with a (100, 100) translation
   // and (1, 2) scale.
   GraphicsContainer container;
   container = graphics.BeginContainer(destRect, srcRect, UnitPixel);

   // Fill a rectangle in the container.
   SolidBrush redBrush(Color(255, 255, 0, 0));
   graphics.FillEllipse(&redBrush, 0, 0, 100, 60);

   // End the container.
   graphics.EndContainer(container);

   // Fill a rectangle outside the container.
   SolidBrush blueBrush(Color(255, 0, 0, 255));
   graphics.FillEllipse(&blueBrush, 0, 0, 100, 60);

Требования

   
Минимальная версия клиента Windows XP, Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusgraphics.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

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

Графика

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

Graphics::EndContainer

Graphics::Restore

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

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