Лабораторная работа №2. Интерфейс графических устройств Windows
Цель лабораторной работы: изучить методы работы с графическим интерфейсом (GDI). Научиться строить простые геометрические фигуры.
Любая Windows – программа выводит информацию на доступное графическое устройство с помощью множества специальных функций, образующих так называемый GDI-интерфейс (от анг. graphics device interface). GDI-интерфейс является аппаратно - независимым. Windows абстрагирует вывод на графическое устройство от технических особенностей его работы. Таким образом, графическое устройство в Windows – это монитор, принтер, плоттер.
В MFC интерфейсу GDI соответствует класс CDC. Данный класс содержит методы для вывода разнообразной графической информации: прямоугольников, линий, эллипсов, текста. Он также позволяет устанавливать цвет и масштаб изображений. Методы, обеспечивающие вывод, например на экран монитора, используют контекст устройства и этот контекст устройства в приложении на базе MFC является объектом класса CDC. Таким образом, класс CDC является базовым классом контекста устройств, содержит ряд атрибутов контекста устройств и методы управляющие ими. И для того, использовать контекст устройства, необходимо создать объект CDC.
На практике пользуются следующими классами, производными от CDC:
- CClientDC – управляет контекстом экрана монитора, связанного с клиентской областью окна;
- CWindowDC – управляет контекстом экрана монитора, связанного и с клиентской областью окна и с его системной частью.
Ниже приведен список часто используемых функций класса СDC:
Ellipse-рисует эллипс.
Polygon- рисует многоугольник.
Rectangle –рисует пряпоугольник.
RoundRect – прямоугольник со скругленными углами.
Chord - сегмента эллипса.
Pie - сектора эллипса.
LineTo- рисует линию.
При рисовании линии при помощи функции LineTo рисование осуществляется с текущей позиции пера. Для ее изменения существует функция MoveTo.
Для управления цветом фона и цветом линий существуют специальные объекты GDI. Цветом фона управляет объект – «кисть», которому соответствует класс CBrush, а цветом линий управляет объект – «перо», которому соответствует класс CPen.
Рассмотрим создание объекта «перо». Создание может происходить в два этапа: сначала объявляется переменная типа CPen, потом вызывается функция функция CreatePen, в которую предают тип линии, ширину и цвет.
Для указания типов линии используют константы:
PS_SOLID - сплошная линия;
PS_DASH - штриховая линия;
PS_DASHDOT – штрих пунктирная линия;
После создания объекта перо его необходимо выбрать в контекст устройства рисования. Для этого вызывают метод SelctObject класса СDC, передавая ему указатель на объект «перо».
Рассмотрим типовой пример: Написать программу, после нажатия кнопки выводящую картинку усеченного эллипса красного цвета с синими гранями (рисунок 1).
Для решения задачи необходимо создать приложение на основе диалогового окна.
Поместить на форму кнопку, при нажатии которой будет выполняться функция рисования.
Обработчик нажатия кнопки приведен ниже:
void CDraw::OnButton1()
{
// TODO: Add your control notification handler code here
CClientDC dc(this); //объявляем класс, производный от класса CDC
// класс CСlientDC предназначен для рисования в диалоговом окне
CBrush br; // объявляем класс кисти
br.CreateSolidBrush(RGB(255,0,0)); //создаем сплошную красную кисть
dc.SelectObject(&br);// выбираем кисть в контекст устройства
CPen p; //объявляем класс пера
p.CreatePen(PS_SOLID ,1,RGB(0,0,255));
//создаем сплошное перо, толщиной 1, синего цвета
dc.SelectObject(&p); // выбираем перо в контекст устройства
for(int x=0,int y=0;x<100;x+=3,y+=4)
dc.Ellipse(x,y,300,300); //рисуем эллипс с заданными координатами
}
Задание к лабораторной работе
Требуется нарисовать одну из фигур, представленных на рисунке 2. в соответствии со своим вариантом. Фигуры должны быть окрашены в произвольные цвета.
Индивидуальные задания:
Контрольные вопросы:
1. Дайте характеристику GDI-интерфейсу
2. В чем заключается роль класса CDС в MFC?
3. Назовите основные функции класса CDС для рисования фигур, линий.