Лекция 10
Контекст устройства_ 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
Пример использования диалогового окно выбора цвета 7
модель перьевого плоттера_ 8
Перемещение карандаша. Функция MoveTo 8
Рисование отрезка. Функция LineTo 9
Рисование точки. Функция SetPixel 9
Получение цвета точки. Функция SetPixel 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
Контекстом устройства называется область памяти, используемая в системе Windows для выполнения графических операций. Графический вывод может выполняться как на экран, так и на принтер. Объекты класса CDC (Class Device Contacts) содержат множество встроенных методов, используемых в процессе рисования в контексте устройства. Все рисование в Windows выполняется через контекст устройства.
Контексты устройств упрощают задачи программирования. Дело в том, что они могут соответствовать самым разным устройствам, например, экрану монитора или принтеру. Если вы рисуете через контекст устройства, то изображение будет правильно отображаться на разных устройствах, в том числе на экране и на принтере без изменения кода.
Иерархия классов контекстов приведена на рисунке.
Ø 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 ()
…
};
Функция OnPaint вызывается в тот момент, когда окно получает сообщение WM_PAINT. Это сообщение посылается окну всегда, когда требуется перерисовка экрана. Например, при увеличении размера окна, если окно выходит на передний план, при запуске программы.
Поскольку наша программа должна реагировать на событие перерисовки экрана, то карта сообщений должна содержать вызов соответствующей функции ON_WM_PAINT
BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd)
ON_WM_PAINT
…
END_MESSAGE_MAP()
Переопределяем функцию перерисовки окна.
void CMainWnd::OnPaint()
{
// объявление экземпляра класса CPaintDC для работы с клиентской областью окна
// связывает его с контекстом устройства текущего диалогового окна
CPaintDC dc ( this ) ;
dc.TextOut ( 200 , 200 , "Hello MFC Program" ) ; // Написать в окне привет
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.