- •Лабораторная работа № 5
- •1. Цель работы
- •2. Краткие теоретические сведения
- •2.1. Описание класса cClientDc
- •2.2. Создание инструментов рисования
- •2.3. Типы данных для хранения информации о графических объектах
- •2.4. Методы рисования линейчатых объектов класса cClientDc
- •2.5. Методы рисования закрашенных объектов с помощью кисти
- •2.6. Методы рисования графических примитивов с помощью кисти и пера
- •2.7. Методы работы с текстом
- •3. Задание на лабораторную работу
- •4. Варианты заданий
- •5. Пример решения типового задания
- •5.1. Задание
- •5.2. Этапы выполнения работы
- •6. Контрольные вопросы
Лабораторная работа № 5
РАЗРАБОТКА ГРАФИЧЕСКИХ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ПРИЛОЖЕНИЙ
1. Цель работы
Целью работы является изучение графических функций в среде программирования Microsoft Developer Studio (Visual C++).
2. Краткие теоретические сведения
2.1. Описание класса cClientDc
Для графических построений в Microsoft Developer Studio предназначен класс CDC, содержащий методы рисования. Однако в приложениях обычно используют производный от него класс CClientDC, который наследует методы класса CDC, а также инициализирует окно для рисования, заданное указателем pWnd:
CClientDC имя_объекта(CWnd* pWnd);
Ниже приведен пример объявления объекта класса CClientDC и вызова его методов:
CWnd* pWnd = GetDlgItem(IDC_DIALOG);
//получаем указатель на окно для рисования
CClientDC NewDC (pWnd); // создаем объект класса
NewDC.MoveTo(0,0); //используем методы класса
NewDC.LineTo(10,10);
где метод
CWnd* GetDlgItem(int nID);
возвращает указатель на элемент диалога с идентификатором nID, например, c идентификатором IDC_EDIT1 для элемента Edit Box.
Цвет графических построений задают с помощью типа данных COLORREF, возвращаемого макросом RGB(r, g, b), где r – красная, g – зеленая, b – синяя компоненты, изменяемые в диапазоне от 0 до 255. Черный цвет получают при нулевых значениях всех компонент, белый – при всех значениях равных 255.
Ниже приведено описание основных методов класса CClientDC и типов данных, используемых для их вызова.
2.2. Создание инструментов рисования
1. Объект для изображения линий – перо:
CPen имя_объекта( int PenStyle, int Width, COLORREF Color);
Параметры:
PenStyle – тип пера, который может иметь следующие значения:
PS_SOLID – сплошное;
PS_DASH – пунктирное (при толщине 1 пиксел);
PS_DOT – точечное (при толщине 1 пиксел);
PS_DASHDOT – тире-точка (при толщине 1 пиксел);
PS_NULL – прозрачное перо;
Width – толщина пера в пикселах;
Color – цвет пера.
Пример создания пера:
CPen pen(PS_SOLID, 3, RGB(0,255,0) );
// сплошное зеленое перо толщиной 3 пиксела
2. Объект для закрашивания областей – кисть:
CBrush имя_объекта ( COLORREF Color );
//для заливки области определенным цветом
CBrush имя_объекта ( int Index, COLORREF Color);
// для закрашивания области штриховкой определенного типа и
// цвета
Параметры:
Color – цвет кисти;
Index – тип кисти, его возможные значения следующие:
HS_BDIAGONAL – штриховка с наклоном вправо (\\\\\\\);
HS_CROSS – штриховка вертикальными и горизонтальными линиями (++++);
HS_DIAGCROSS – штриховка пересекающимися линиями (ХХХХХ);
HS_FDIAGONAL – штриховка с наклоном влево (/////////);
HS_HORIZONTAL – штриховка горизонтальными линиями;
HS_VERTICAL – штриховка вертикальными линиями.
Пример создания кисти
CBrush brush(HS_CROSS, RGB(255,0,0) ); // красное перо "в клетку"
3. Функция для активизации кисти или пера класса CClientDC:
CBrush* SelectObject( CBrush* pBrush );
CPen* SelectObject( CPen* pPen );
Параметры:
pBrush – указатель на кисть, которую нужно выбрать в качестве активной кисти;
pPen – указатель на перо, которое нужно выбрать в качестве активного пера.
Возвращаемое значение: указатель на ранее установленное перо или кисть.