Graphics::BeginContainer

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

Синтаксис

GraphicsContainer BeginContainer();

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

Тип: GraphicsContainer

Этот метод возвращает значение, идентифицирующее контейнер.

Комментарии

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

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

При вызове метода 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 и начинается графический контейнер. Затем он задает дополнительную область обрезки для контейнера и рисует прямоугольники, демонстрирующие эффективную область обрезки внутри контейнера.

VOID Example_BeginContainer(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, 400, 400);

   // 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, 400, 400);

   // Set the clipping region to infinite, and draw the outlines 
   // of 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 10 20348
Минимальная версия сервера Сборка Windows 10 20348
Верхняя часть gdiplusgraphics.h

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

Графика

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

Graphics::EndContainer

Graphics::Restore

Graphics::Save

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