Компьютерная графика. Основные подходы к разработке графических приложений


Лабораторная работа № 1

Тема: Компьютерная графика. Основные подходы к разработке графических приложений. Выбор среды программирования. Работа с графической библиотекой.
Цель: Знакомство с компонентами и способами разработки объектов компьютерной графики; рекомендациями и основаниями выбора программной cреды.
Ход работы.

1. Принципы формирования изображения в компьютерной графике.
Графические построения можно разбить на группы, содержащие:
— линейные изображения;
— сплошные объекты;
— шрифты;
— матрицы пикселов (изображения).
Растровый принцип компьютерной графики положен в основу большинства систем. Изображение представлено в виде прямоугольной матрицы точек (пикселов), где каждый несет информацию о цвете, выбранном из одного из стандартных наборов цветов (палитры). Для преобразования этого изображения компьютер имеет специальный модуль — видеоадаптер, который хранит оперативную информацию в своей памяти (видеопамяти). При этом на каждый пиксел отводится фиксированное количество бит (см. материал лекций). Это первое. Второе заключается в том, что видеоадаптер обеспечивает отображение этой информации на экране монитора в виде фрагментов, сменяющих друг друга с регулярностью (50-85) раз в секунду.
Поэтому, фактически, любая графическая операция состоит в том, чтобы поставить в соответствие пикселу определенный цвет или узнать цвет заданной точки. Для решения этой задачи на программном уровне применяют языки высокого уровня, обладающие возможностью описывать графику (поскольку работа только с отдельно взятыми точками представляется трудоемкой). Это может быть Fortran, Бейсик, Delphi, Pascal, Си. Последний представляет наибольший интерес, ввиду его универсальности и распространенности. Кроме этого существует возможность подключения графических библиотек, содержащих множество специализированных функций.
В настоящее время для описания трехмерных специализированных графических, мультимедийных, игровых, презентационных задач применяют и другие средства: DirectX, OpenGL, QuickDraw 3D, 3D Studio MAX. Их возможности позволяют сформировать сложные полноцветные объекты, придать им динамику, сформировать сложные Среды (например — небо). Это будет следующий этап. Пока остановимся на базовых средствах.
2. Графические библиотеки.
Каждый компилятор имее свою графическую библиотеку, которая обязана поддерживать работу с основными типами видеоадаптеров. Либо пишется специализированный класс функций для работы с конкретным устройством (универсальность исключена), либо в библиотеку включаются версии процедур возможных адаптеров (что увеличивает размер файлов и отнимает немало памяти). Лучшим решением будет использование специализированных драйверов устройств. При этом используется базовый набор графических операций. Пишется отдельная программа — драйвер , со стандартным интерфейсом. Она вынесена в отдельный файл. Библиотека позволяет определить тип имеющегося видеоадаптера и подключить к нему соответсвующую программу (драйвер) (Рис 1).

Видеоадаптер 1 Драйвер 1

Видеоадаптер 2 Драйвер 2 Библиотека

Видеоадаптер 3 Драйвер 3

Рис.1. Назначение драйверов.

Подключение библиотеки (для Borland C++) осуществляется в последовательности: Options ? Linker ? Library.
3. Инициализация.
Перед работой со стандартной библиотекой ее необходимо вызвать (инициализировать). Для инициализации библиотеки служит функция initgraf:
void far initgraf ( int far *driver, int far *mode, char far *path);
где первый параметр — тип адаптера с которым будет вестись работа (CGA, EGA, VGA, DETECT м пр.). Значение DETECT сообщает, что библиотека сама должна установить имеющийся видеоадаптер и установить для него режим наибольшего разрешения.
Второй параметр (mode) — определяет режим. Его не указывают, если выбран тип драйвера DETECT. Для разного разрешения существует свой параметр:
CGAC0, CGAC1, CGAC2, CGAC3 — 320 х 200 точек (4 цвета)
CGAHI — 640 х 200 точек (2 цвета)
EGALO — 640 х 200 точек (16 цветов)
EGAHI — 640 х 350 точек (16 цветов)
VGALO — 640 х 200 точек (16 цветов)
VGAMED — 640 х 350 точек (16 цветов)
VGAHI — 640 х 480 точек (16 цветов)
Третьим параметром выступает имя каталога, где находится драйвер адаптера — файл типа BGI (Borland’s Graphics Interface). Это может быть:
— CGA.BGI — драйвер адаптера CGA;
— EGAVGA.BGI — драйвер адаптеров EGA и VGA;
— HERC.BGI — драйвер адаптера Hercules;
4. Работа с библиотекой.
Иногда необходимо, чтобы функция возвратила в программу код завершения последней графической операции. Для этого существует функция graphresult. Например:
int far graphresult (void);
выведет в качестве успешного выполнения значение grOk.
Примечание! При ошибочном результате в ходе работы программы применяется функция grapherrormsg( ) и на экран выдается стандартное диагностическое сообщение. Содержание его зависит от аргумента в скобках.
Чтобы получить значения X и Y координат пиксела можно использовать следующие функции:
int far getmaxx (void); /* координата х*/
int far getmaxy (void); /* координата y*/.
Для определения текущего установленного режима применяют getgraphmode:
int far getgraphmode (void);
При необходимости провести очистку экрана используется clearviewport:
void far clearviewport (void);
5. Завершение работы с библиотекой.
По окончании работы с библиотекой необходимо вызвать функцию closegraph:
void far closegraph (void);
Пример 1. Инициализация библиотеки и установка координат.
//examp1.cpp
#include <conio.h>
#include <graphics.h>
#include <process.h>
#include <stdio.h>
main ()
{
int mode;
int res;
int driver = DETECT;
initgraph ( &driver, &mode, “”);
if ( ( res = graphresult () != grOk )
{
printf (“\nGraphics error: %s\n”, grapherrormsg (res) );
exit (1);
}
// draw rectangle
line ( 0, 0, 0, getmaxy() ); /*задание оси OY*/
line ( 0, getmaxy (), getmaxx (), getmaxy () ); /*задание нижней границы*/
line ( getmaxx (), getmaxy (), getmaxx (), 0 ); /*задание правой границы*/
line (getmaxx (), 0, 0, 0 ); /*задание оси OX*/
getch ();
closegraph ();
}
Программа переходит в графический режим, рисует по краям прямоугольник. В случае ошибочного ввода (res) выдается сообщение. Происходит инициализация, экран очищается и на нем устанавливается система координат с началом в т.(0,0) (Рис.2)

Y
Практическое задание.

1. Написать и отладить программу для создания локальной системы координат в окне 80 х 80, с предварительной очисткой экрана. Установить разрешение 640 х 200 точек.

Загрузка...