- •КОНТЕКСТ УСТРОЙСТВА
- •Класс 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 |
Работа с графикой |
8 |
Пример использования диалогового окно выбора цвета
Ниже приведён код обработки события щелчка на кнопке IDC_COLOR в классе CcolDlg. void CColDlg :: OnColor ( )
{
//создание экземпляра класса окна выбора цвета; цвет по умолчанию - красный
CColorDialog dlg ( 0x000000FF ) ;
//вывод на экран окна выбора цвета
if ( dlg.DoModal ( ) == IDOK ) |
// если при закрытии окна пользователь нажал кнопку ОК |
|
{ |
|
|
CString str ; |
// текст сообщения |
|
COLORREF color ; |
// выбранный цвет |
|
BYTE red , green , blue ; |
// составляющие цвета |
|
color = dlg.GetColor (); |
// получение цвета, выбранного пользователем |
|
red |
= GetRValue ( color ) ; |
// определение красной составляющей цвета |
green = GetGValue ( color ) ; |
// определение зелёной составляющей цвета |
|
blue |
= GetBValue ( color ) ; |
// определение синей составляющей цвета |
//Формирование строки текста сообщения, цвета выводятся в виде шестнадцатеричных чисел str.Format ( "Выбран цвет 0x%08X, содержащий:\n"
"\t0x%02X - красного\n" "\t0x%02X - зеленого\n"
"\t0x%02X - синего", color , red , green , blue ) ;
//вывод окна сообщений
MessageBox ( str , "Выбран цвет" ) ;
}
В результате работы этого фрагмента кода на экран будет выведено следующее окно сообщений.
МОДЕЛЬ ПЕРЬЕВОГО ПЛОТТЕРА
Большинство графических систем первого поколения были двухмерными. В них использовалась концепция модели перьевого плоттера. Такое устройство формирует изображение на бумаге за счет перемещения пера, закрепленного на двух подвижных направляющих. Одна направляющая перемещается в продольном направлении (вдоль оси у), а другая — в поперечном (вдоль оси х). Специальный механизм поднимает и опускает перо. В опущенном состоянии перо при перемещении оставляет след на бумаге — этот след и формирует изображение. В современных пакетах используется та же самая идея формирования на носителе следа подвижного пера, т.е. фактически воспроизведения процесса ручного вычерчивания с помощью карандаша. Пользователь при этом имеет дело с участком плоскости, ограниченным размерами планшета.
Поведение такой графической системы описывается двумя основными графическими функциями: MoveTo и LineTo.
При выполнении функции MoveTo перо приподымается и затем перемещается в точку с координатами (х, у), не оставляя следа на носителе. При выполнении функции LineTo перо опускается и затем перемещается по прямой из текущего положения в точку с заданными координатами (х, у), оставляя след на носителе. Если добавить к этим функциям еще и функции настройки (выбор пера подходящего цвета и толщины), то получим законченную двухмерную графическую систему. Ниже приведены прототипы этих функций.
Перемещение карандаша. Функция MoveTo
Назначение: перемещает карандаш в указанную позицию.
Выжол Ю.А.
