Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабор_работа №6 графика.doc
Скачиваний:
13
Добавлен:
21.04.2015
Размер:
609.79 Кб
Скачать

Лабораторная работа № 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(rgb), где 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 – указатель на перо, которое нужно выбрать в качестве активного пера.

Возвращаемое значение: указатель на ранее установленное перо или кисть.