Графические объектыGraphic Objects

Windows предоставляет широкий набор инструментов рисования для использования в контексте устройств.Windows provides a variety of drawing tools to use in device contexts. В их числе перья для рисования линий, кисти для заливки фигур и шрифты для текста.It provides pens to draw lines, brushes to fill interiors, and fonts to draw text. MFC предоставляет классы графических объектов, эквивалентные инструментам рисования в Windows.MFC provides graphic-object classes equivalent to the drawing tools in Windows. В таблице ниже показаны доступные классы и эквивалентные типы дескрипторов интерфейса графических устройств (GDI).The table below shows the available classes and the equivalent Windows graphics device interface (GDI) handle types.

Примечание

Дополнительные сведения см. в документации по пакету SDK для GDI+.For more information, see the GDI+ SDK documentation.

В этой статье описывается использование классов графических объектов:This article explains the use of these graphic-object classes:

Классы для объектов Windows GDIClasses for Windows GDI Objects

КлассClass Тип дескриптора WindowsWindows handle type
CPenCPen HPEN
CBrushCBrush HBRUSH
CFontCFont HFONTHFONT
CBitmapCBitmap HBITMAP
CPaletteCPalette HPALETTE
CRgnCRgn HRGNHRGN

Примечание

Класс CImage предоставляет улучшенную поддержку битовых карт.The class CImage provides enhanced bitmap support.

У каждого класса графического объекта в библиотеке есть конструктор, позволяющий создавать графические объекты этого класса, которые необходимо затем инициализировать с помощью соответствующей функции создания, такой как CreatePen.Each graphic-object class in the class library has a constructor that allows you to create graphic objects of that class, which you must then initialize with the appropriate create function, such as CreatePen.

У каждого класса графического объекта в библиотеке есть оператор приведения, который преобразует объект MFC в связанный дескриптор Windows.Each graphic-object class in the class library has a cast operator that will cast an MFC object to the associated Windows handle. Полученный дескриптор допустим, пока связанный объект не отсоединит его.The resulting handle is valid until the associated object detaches it. Используйте Detach функцию члена объекта, чтобы отсоединить этот обработчик.Use the object's Detach member function to detach the handle.

Следующий пример кода преобразует объект CPen в дескриптор Windows:The following code casts a CPen object to a Windows handle:

CPen myPen;
myPen.CreatePen(PS_COSMETIC, 1, RGB(255,255,0));
HPEN hMyPen = (HPEN)myPen;

Создание графического объекта в контексте устройстваTo create a graphic object in a device context

  1. Определите графический объект в кадре стека.Define a graphic object on the stack frame. Инициализируйте объект с помощью функции создания определенного типа, такой как CreatePen.Initialize the object with the type-specific create function, such as CreatePen. Или же инициализируйте объект в конструкторе.Alternatively, initialize the object in the constructor. Ознакомьтесь с обсуждением создания с одним этапом и двумя этапами, в котором приводится пример кода.See the discussion of one-stage and two-stage creation, which provides example code.

  2. Выберите объект в текущем контексте устройства, сохранив старый графический объект, который был выбран ранее.Select the object into the current device context, saving the old graphic object that was selected before.

  3. Завершив работу с текущим графическим объектом, выберите старый объект в контексте устройства, чтобы восстановить его состояние.When done with the current graphic object, select the old graphic object back into the device context to restore its state.

  4. Разрешите автоматическое удаление выделенного в кадре графического объекта при выходе из области.Allow the frame-allocated graphic object to be deleted automatically when the scope is exited.

Примечание

Если вы будете многократно использовать графический объект, можно выделить его один раз и выбирать в контексте устройства каждый раз, когда он нужен.If you will be using a graphic object repeatedly, you can allocate it once and select it into a device context each time it is needed. Не забудьте удалить такой объект, когда он больше не требуется.Be sure to delete such an object when you no longer need it.

Что вы хотите узнать подробнееWhat do you want to know more about

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

Объекты окнаWindow Objects