Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC Лекции PDF / VC 15 Лек Графика.pdf
Скачиваний:
37
Добавлен:
15.02.2015
Размер:
651.21 Кб
Скачать

Лекция 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 ()

};

Выжол Ю.А.