Метод Graphics::BeginContainer(constRect&,constRect&;Unit) (gdiplusgraphics.h)
Метод Graphics::BeginContainer запускает новый графический контейнер.
Синтаксис
GraphicsContainer BeginContainer(
[in, ref] const Rect & dstrect,
[in, ref] const Rect & srcrect,
[in] Unit unit
);
Параметры
[in, ref] dstrect
Тип: const Rect
Ссылка на прямоугольник, который вместе с srcrect указывает преобразование для контейнера.
[in, ref] srcrect
Тип: const Rect
Ссылка на прямоугольник, который вместе с dstrect указывает преобразование для контейнера.
[in] 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 возвращается в состояние, в которое он находился на момент вызова Graphics::BeginContainer , возвращающего этот идентификатор. Блок сведений, размещенный в стеке вызовом Graphics::BeginContainer , удаляется из стека, а все информационные блоки, размещенные в этом стеке после вызова Graphics::BeginContainer , также удаляются.
Вызовы метода Graphics::Save помещают информационные блоки в тот же стек, что и вызовы метода Graphics::BeginContainer . Так же, как вызов Graphics::EndContainer связан с вызовом Graphics::BeginContainer , вызов Graphics::Restore сопряжен с вызовом Graphics::Save .
Примеры
В следующем примере вызывается метод Graphics::BeginContainer для создания графического контейнера. Код задает преобразование для контейнера путем передачи двух прямоугольников в метод Graphics::BeginContainer . Код вызывает Graphics::FillEllipse дважды: один раз внутри контейнера и один раз вне контейнера (после вызова Graphics::EndContainer).
VOID Example_BeginContainer2(HDC hdc)
{
Graphics graphics(hdc);
// Define a translation and scale transformation for the container.
Rect srcRect(0, 0, 200, 100);
Rect 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 an ellipse in the container.
SolidBrush redBrush(Color(255, 255, 0, 0));
graphics.FillEllipse(&redBrush, 0, 0, 100, 60);
// End the container.
graphics.EndContainer(container);
// Fill the same ellipse 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 |