При работе в графическом режиме экран дисплея представляет собой матрицу точек (пикселов - pixel) - т.е. матрицу отображаемых точек. При этом число столбцов и строк пикселов (разрешение экрана дисплея) зависит от режима работы видеоадаптера. Можно управлять цветом каждого пиксела, задавая цвета фона, рисунка и заполнения замкнутых областей экрана дисплея, а также создавать эффект движения изображений.
За начало координат экрана дисплея в графическом режиме принимается верхний левый угол с координатами x=0 и y=0, где x - координата по горизонтали, y - координата по вертикали точки (пиксела). Во всех примерах программ, приведенных далее по тексту, нулевые координаты присваиваются верхнему левому углу создаваемого графического окна. Содержимое библиотеки графических функций в языке С подразделяется на немобильную группу функций (функции зависят от типа адаптера) и на мобильную группу функций.
Немобильная группа графических программ представляет собой BGI драйвер (Borland Graphics Interface).
Драйвер - это обработчик прерывания 10h, он должен дополнить системный обработчик до того, как будут использоваться мобильные графические функции. Перед завершением программы таблица векторов прерываний восстанавливается.
Основные функции BGI-драйвера - установка и обновление ряда внешних переменных, которые могут изменяться как функциями системного обработчика прерывания 10h (например, при переключении видеорежима или при изменении регистров палитры), так и мобильными функциями библиотеки графики языка Turbo C (TC) или C++.
Для различных типов адаптеров применяются различные драйверы: CGA.BGI - драйвер для CGA и MCGA; EGAVGA.BGI - драйвер для адаптеров EGA,VGA; HERC.BGI - драйвер для монохромных адаптеров Hercules.
Графические функции мобильной группы подразделяются на группы:
- функции подготовки графической системы и перехода в текстовый режим;
- функции получения изображений на экране дисплея;
- функции установки параметров изображения (вид штриховки, стиль линий и т.д.);
- функции определения параметров режимов и изображений.
Функции подготовки графической системы
Перед использованием графических функций необходимо инициализировать систему графики. Графические режимы, поддерживаемые библиотекой графики, задаются символическими константами, описанными в файле graphics.h в перечислимом типе graphics_mode.
Инициализация графической системы производится функцией initgraph (), которая загружает графический драйвер и переключает экран дисплея в требуемый графический режим. Описание функции:
initgraph (&g_driver,&g_mode," ");
В двойных апострофах (третий параметр) необходимо указать путь (маршрут) к графическому драйверу. Если указать пробел, то графический драйвер должен быть в текущем каталоге. Первый параметр &g_driver - тип графического драйвера: 1 - CGA, 3 - EGA, 9 - VGA и т.д. Второй параметр &g_mode - графический режим (рассмотрим только для VGA драйвера):
VGA 0 640x200
VGAMED 1 640x350
VGAHI 2 640x480
Запись типа 640x200 - это разрешающая способность экрана дисплея в графическом режиме (число строк умножить на число столбцов).
Для автоматического задания режима графики следует записать:
int g_driver=DETECT, g_mode;
Для завершения работы в графическом режиме необходимо применить функцию closegraph ();
Основные функции получения изображения
Аргументами большинства функций графики являются данные целого типа.
1. Вычерчивание окружности: circle (x,y,r);
2. Вычерчивание закрашенного прямоугольника: bar (x1,y1,x2,y2);
3. Вычерчивание параллелепипеда: bar3d (x1,y1,x2,y2,глубина,p);
p=0 или p=1 - верхняя грань отображается (не отображается)
4. Вычерчивание линии: line (x1,y1,x2,y2);
5. Вычерчивание точки: putpixel (x,y,цвет);
6. Вычерчивание прямоугольника: rectangle (x1,y1,x2,y2);
7. Вывод текста: outtext (x,y,"текст");
8. Установка указателя на экране дисплея: moveto (x,y);
9. Очистка экрана дисплея: cleardevice (void);
10. Заполнение ранее заданным наполнителем замкнутой области:
floodfill (x,y,c); c - номер цвета линии, ограничивающей область.