- •КОНТЕКСТ УСТРОЙСТВА
- •Класс CDC и его производные
- •Объявление контекста
- •РАБОТА С ТЕКСТОМ
- •Вывод текста. Функция TextOut
- •Вывод текста в прямоугольнике отсечения. Функция ExtTextOut
- •Цвет фона. Функции GetBkColor, SetBkColor
- •Цвет символов текста. Функции GetTextColor, SetTextColor
- •Выравнивание текста. Функции GetTextAlign, SetTextAlign
- •Пример рисования текста
- •ЦВЕТОВАЯ СИСТЕМА RGB
- •ДИАЛОГОВОЕ ОКНО ВЫБОРА ЦВЕТА
- •Конструктор класса CColorDialog
- •Отображение диалогового окна. Функция DoModal
- •Получение выбранного цвета. Функция GetColor
- •Пример использования диалогового окно выбора цвета
- •МОДЕЛЬ ПЕРЬЕВОГО ПЛОТТЕРА
- •Перемещение карандаша. Функция MoveTo
- •Рисование отрезка. Функция LineTo
- •Рисование точки. Функция SetPixel
- •Получение цвета точки. Функция GetPixel
- •РИСОВАНИЕ ГРАФИЧЕСКИХ ПРИМИТИВОВ
- •Рисование прямоугольника. Функция Rectangle
- •Рисование округлённого прямоугольника. Функция RoundRect
- •Рисование эллипса. Функция Ellipse
- •Рисование эллиптической дуги. Функция Arc
- •Рисование эллиптической дуги и хорды. Функция Chord
- •Рисование ломаной линии. Функция Polyline
- •КАРАНДАШ. КЛАСС CPEN
- •Конструкторы класса СРеn
- •Создание карандаша. Функция CreatePen
- •Создание указателя на карандаш. Тип HPEN
- •Использование объекта. Функция SelectObject
- •Получение атрибутов объекта. Функция GetObject
- •НАСТРОЙКА РЕЖИМА ОТОБРАЖЕНИЯ
- •Выбор единиц измерения. Функция SetMapMode
- •Размер прямоугольника. Структура SIZE
- •Получение размеров клиентской области. Функция GetClientRect
- •Пример настройки режима отображения
- •КИСТЬ. КЛАСС CBRUSH
- •Конструкторы класса CBrush
- •Образец физической кисти. Структура LOGBRUSH
- •Создание кисти
- •Пример создания и использования кисти
- •Создание точечного рисунка. Функция CreateBitmap
- •Создание ресурса точечного рисунка
- •Загрузка ресурса точечного рисунка. Функция LoadBitmap
Лекция 14 |
Работа с графикой |
1 |
Л Е К Ц И Я 1 4
КОНТЕКСТ УСТРОЙСТВА _______________________________________________________________ 2
Класс CDC и его производные ____________________________________________________________ 2 Объявление контекста___________________________________________________________________ 2
РАБОТА С ТЕКСТОМ ____________________________________________________________________ 3
Вывод текста. Функция TextOut ___________________________________________________________ 3 Вывод текста в прямоугольнике отсечения. Функция ExtTextOut ________________________________ 3 Цвет фона. Функции GetBkColor, SetBkColor _________________________________________________ 4 Цвет символов текста. Функции GetTextColor, SetTextColor_____________________________________ 4 Выравнивание текста. Функции GetTextAlign, SetTextAlign _____________________________________ 4 Пример рисования текста ________________________________________________________________ 5
ЦВЕТОВАЯ СИСТЕМА RGB ______________________________________________________________ 6 ДИАЛОГОВОЕ ОКНО ВЫБОРА ЦВЕТА ___________________________________________________ 7
Конструктор класса CColorDialog__________________________________________________________ 7 Отображение диалогового окна. Функция DoModal ___________________________________________ 7 Получение выбранного цвета. Функция GetColor _____________________________________________ 7 Получение дополнительных цветов. Функция GetSavedCustomColors ____________________________ 7
Пример использования диалогового окно выбора цвета _______________________________________ 8
МОДЕЛЬ ПЕРЬЕВОГО ПЛОТТЕРА________________________________________________________ 8
Перемещение карандаша. Функция MoveTo _________________________________________________ 8 Рисование отрезка. Функция LineTo ________________________________________________________ 9 Рисование точки. Функция SetPixel_________________________________________________________ 9 Получение цвета точки. Функция GetPixel ___________________________________________________ 9
РИСОВАНИЕ ГРАФИЧЕСКИХ ПРИМИТИВОВ ____________________________________________ 9
Рисование прямоугольника. Функция Rectangle ______________________________________________ 9 Рисование округлённого прямоугольника. Функция RoundRect__________________________________ 9 Рисование эллипса. Функция Ellipse ______________________________________________________ 10 Рисование эллиптической дуги. Функция Arc _______________________________________________ 10 Рисование эллиптической дуги и хорды. Функция Chord ______________________________________ 10 Рисование ломаной линии. Функция Polyline________________________________________________ 10 Рисование многоугольника. Функция Polygon _______________________________________________ 11
КАРАНДАШ. КЛАСС CPEN ______________________________________________________________ 11
Конструкторы класса СРеn ______________________________________________________________ 11 Создание карандаша. Функция CreatePen__________________________________________________ 12 Создание указателя на карандаш. Тип HPEN _______________________________________________ 12 Использование объекта. Функция SelectObject ______________________________________________ 12 Получение атрибутов объекта. Функция GetObject___________________________________________ 13
НАСТРОЙКА РЕЖИМА ОТОБРАЖЕНИЯ_________________________________________________ 13
Выбор единиц измерения. Функция SetMapMode ____________________________________________ 13
Задание произвольных единиц измерения. Функции SetViewportExt иSetWindowExt ________________ 14
Размер прямоугольника. Структура SIZE __________________________________________________ 14 Настройка начала координат. Функции SetViewportOrg и SetWindowOrg _________________________ 14 Получение размеров клиентской области. Функция GetClientRect ______________________________ 14 Пример настройки режима отображения___________________________________________________ 15
КИСТЬ. КЛАСС CBRUSH ________________________________________________________________ 16
Конструкторы класса CBrush_____________________________________________________________ 16 Образец физической кисти. Структура LOGBRUSH __________________________________________ 16 Создание кисти________________________________________________________________________ 17 Пример создания и использования кисти __________________________________________________ 17
ТОЧЕЧНЫЙ РИСУНОК. КЛАСС CBITMAP _______________________________________________ 18
Создание точечного рисунка. Функция CreateBitmap _________________________________________ 18 Создание ресурса точечного рисунка _____________________________________________________ 18 Загрузка ресурса точечного рисунка. Функция LoadBitmap ____________________________________ 19
Выжол Ю.А.
Лекция 14 |
Работа с графикой |
2 |
КОНТЕКСТ УСТРОЙСТВА
Контекстом устройства называется область памяти, используемая в системе Windows для выполнения графических операций. Графический вывод может выполняться как на экран, так и на принтер. Объекты класса CDC (Class Device Contacts) содержат множество встроенных методов, используемых в процессе рисования в контексте устройства. Все рисование в Windows выполняется через контекст устройства.
Контексты устройств упрощают задачи программирования. Дело в том, что они могут соответствовать самым разным устройствам, например, экрану монитора или принтеру. Если вы рисуете через контекст устройства, то изображение будет правильно отображаться на разных устройствах, в том числе на экране и на принтере без изменения кода.
CObject
CDC
CClientDC
CMetaFileDC
CPaintDC
CWindowDC
Класс CDC и его производные
Иерархия классов контекстов приведена на рисунке.
CDC – базовый класс для всех классов, инкапсулирующих контексты устройств Windows. Объекты этого класса используются при работе с экраном дисплея или с принтером
CPaintDC – используется только в обработчике сообщения WM_PAINT CСlientDC – используется только при работе с клиентской областью окна.
CWindowsDC – используется при работе со всем окном, как с клиентской, так и с неклиентской областью.
CMetaFileDC – используется при работе с метафайлами
Класс CDC имеет два члена данных для хранения дескрипторов: HDC m_hDC – дескриптор контекста устройства графического вывода.
HDC m_hAttribDC – дескриптор контекста устройства используется для получения параметров устройства.
По умолчанию оба дескриптора равны.
Объявление контекста
Для рисования в клиентской области окна удобно использовать виртуальную функцию прорисовки экрана. Она реализована в виде заглушки afx_msg OnPaint. Как правило, MFC Class Wizard сам добавляет скелет кода этой функции в код класса диалогового окна.
class CGraphDlg : public CDialog
{
protected:
afx_msg void OnPaint () ; DECLARE_MESSAGE_MAP ()
…
};
Выжол Ю.А.