- •Московский институт электронной техники
- •Программа
- •Контекст устройства
- •Драйвер устройства
- •Устройство вывода
- •Получить контекст устройства
- •Пример программы построения графика в dos
- •Программирование графики в Windows.
- •Пример программы построения графика в Windows
- •Задание к выполнению лабораторной работы.
Программа
|
Контекст устройства
|
Драйвер устройства
|
Устройство вывода
Разберем что такое контекст устройства. С формальной точки зрения контекст устройства – это структура данных. Каждый контекст устройства связан со своим устройством вывода.
Нас будет интересовать контекст устройства связанный с видеодисплеем. В контексте устройства хранится набор атрибутов рисунка и графические инструменты, заданные по умолчанию. Пользователь может использовать заданные по умолчанию атрибуты и инструменты, а также может изменять их сам.
Графическими инструментами являются перья и кисти разной толщины, стиля и цвета.
Часто контекст устройства образно сравнивают с абстрактным листом бумаги или поверхностью, на которой приложение рисует графическое изображение или пишет текст. Далее контекст устройства через драйвер связывается со своим физическим устройством вывода, на котором уже появляется реальное изображение.
Разберем подробно, как пользоваться контекстом устройства. Покажем на схеме 6 основных шагов для рисования графики.
Получить контекст устройства
|
Установить атрибуты рисунка
|
Создать и выбрать графические инструменты
|
Вызвать функции рисования
|
Освободить и уничтожить графические инструменты
|
Освободить контекст устройства
Использование контекста устройства в DOSиWindowsимеет отличия. Об этом мы скажем позже, когда будем рассматривать графику вWindows. Сейчас же мы рассматриваем графику вDOS.
Пункт 1) получение контекста устройства – соответствует инициализации графической системы с помощью функции initgraph().
Пункт 6) освобождение контекста устройства – соответствует выключению графической системы с помощью функции closegraph().
Пункты 2) и 5) подробно рассмотрим позже в графике под Windows. Сейчас без них можно обойтись.
В пункте 3) создание и выбор графических инструментов – мы выбираем перья и кисти разной толщины, стиля и цвета которыми будем рисовать графические объекты.
В пункте 4) вызов функций рисования – мы вызываем графические функции для рисования графических объектов.
Покажем выбор пера на примере фрагмента кода
setlinestyle(SOLID_LINE, 0, 1);
setcolor(LIGHTCYAN);
Здесь выбирается перо со следующими свойствами.
стиль - сплошной
толщина линий - 1 пикселя
цвет линий - ярко-голубой
Этим пером можно рисовать линии, прямоугольники, окружности, дуги и т.д.
Для рисования прямых линий могут понадобиться следующие графические функции.
line(n1, m1, n2, m2)– рисует линию между точками (n1, m1), (n2, m2) в экранной системе координат.
moveto(n1, m1)– устанавливает указатель текущей позиции в точку с координатами (n1, m1).
lineto(n2, m2) - рисует линию между текущей точкой и точкой с координатами (n2, m2).
Для рисования прямоугольника подойдет функция
rectangle(n1, m1, n2, m2)– рисует прямоугольник по координатам (n1, m1), (n2, m2) противоположных углов.
Покажем выбор кисти на примере фрагмента кода
setfillstyle(SOLID_FILL, BLUE);
Здесь выбирается кисть со следующими свойствами.
стиль закраски - сплошной
цвет закраски - синий
Этой кистью можно закрашивать различные замкнутые фигуры.
Для рисования закрашенного прямоугольника подойдет функция.
bar(n1, m1, n2, m2) - рисует закрашенный прямоугольник пером и кистью выбранными выше.
Для рисования закрашенного сектора подойдет функция.
pieslice(n, m, angl1, angl2, radius)– рисует закрашенный сектор круга с центром в точке(n, m), между угламиangl1,angl2(углы в градусах), радиусомradius.
Экранная система координат Рис.1. по умолчанию привязана ко всему пространству видеодисплея. Однако на экране можно выделить окно меньшего размера и сделать его активным. В результате экранные координаты будут привязаны к этому окну, и вывод графики будет теперь осуществляться относительно этого активного окна Рис.3. Для создания активного окна имеется функция.
setviewport(n1, m1, n2, m2, clip)– устанавливает активное окно экрана для вывода изображений.
Рис.3
Кроме рисования фигур в окне вывода и в поле вывода надо уметь рисовать текстовые надписи. Например, надпись “Hello” можно вывести в окне в точке с координатами (n, m) с помощью фрагмента кода.
char *str = “Hello”;
outtextxy(n1, n2, srt);
Если же надо вывести число, например 10.25 , то это можно сделать с помощью фрагмента кода
char *ss;
float f = 10.25;
sprintf(ss,"%3.2f",f);
outtextxy(n, m, ss);