Лабораторная работа №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).

Для решения задачи необходимо создать приложение на основе диалогового окна.

Поместить на форму кнопку, при нажатии которой будет выполняться функция рисования.

 
  Лабораторная работа №2. Интерфейс графических устройств Windows - student2.ru

Обработчик нажатия кнопки приведен ниже:

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. в соответствии со своим вариантом. Фигуры должны быть окрашены в произвольные цвета.

Лабораторная работа №2. Интерфейс графических устройств Windows - student2.ru
Индивидуальные задания:

Контрольные вопросы:

1. Дайте характеристику GDI-интерфейсу

2. В чем заключается роль класса CDС в MFC?

3. Назовите основные функции класса CDС для рисования фигур, линий.


Наши рекомендации