Графические объекты
Windows предоставляет широкий набор инструментов рисования для использования в контексте устройств. В их числе перья для рисования линий, кисти для заливки фигур и шрифты для текста. MFC предоставляет классы графических объектов, эквивалентные инструментам рисования в Windows. В таблице ниже показаны доступные классы и эквивалентные типы дескрипторов интерфейса графических устройств (GDI).
Примечание.
Дополнительные сведения см. в документации по пакету SDK GDI+.
В этой статье описывается использование классов графических объектов:
Классы для объектов Windows GDI
Класс | Тип дескриптора Windows |
---|---|
CPen | HPEN |
Cbrush | HBRUSH |
CFont | HFONT |
CBitmap | HBITMAP |
CPalette | HPALETTE |
Crgn | HRGN |
Примечание.
Класс CImage обеспечивает расширенную поддержку растровых карт.
У каждого класса графического объекта в библиотеке есть конструктор, позволяющий создавать графические объекты этого класса, которые необходимо затем инициализировать с помощью соответствующей функции создания, такой как CreatePen
.
У каждого класса графического объекта в библиотеке есть оператор приведения, который преобразует объект MFC в связанный дескриптор Windows. Полученный дескриптор допустим, пока связанный объект не отсоединит его. Используйте функцию-член объекта Detach
для отсоединения дескриптора.
Следующий пример кода преобразует объект CPen
в дескриптор Windows:
CPen myPen;
myPen.CreatePen(PS_COSMETIC, 1, RGB(255, 255, 0));
HPEN hMyPen = (HPEN)myPen;
Создание графического объекта в контексте устройства
Определите графический объект в кадре стека. Инициализируйте объект с помощью функции создания определенного типа, такой как
CreatePen
. Или же инициализируйте объект в конструкторе. См. обсуждение одноэтапного и двухэтапного создания, в котором приведен пример кода.Выберите объект в текущем контексте устройства, сохранив старый графический объект, который был выбран ранее.
Завершив работу с текущим графическим объектом, выберите старый объект в контексте устройства, чтобы восстановить его состояние.
Разрешите автоматическое удаление выделенного в кадре графического объекта при выходе из области.
Примечание.
Если вы будете многократно использовать графический объект, можно выделить его один раз и выбирать в контексте устройства каждый раз, когда он нужен. Не забудьте удалить такой объект, когда он больше не требуется.