C_Kurs_Lekt / C_III_семестр / 17_bgi_graph_fun
.pdfBGI графика. Функции
BGI ГРАФИКА. ФУНКЦИИ
Графические возможности Borland С (BGI графика).
Borland С существует ряд функций (более пятидесяти), которые обеспечивают достаточно полное управление графическими режимами различными адаптерами дисплеев: CGA, EGA, VGA, MCGA, Hercules, PC3270, AT&T6300 и IBM8514. (файл с прототипами #include <graphics.h>)
Для работы с этими функциями необходимо наличие соответствующих файлов-драйверов (файлы с расширением .BGI) для каждого вида адаптера и файлов шрифтов ((файлы с расширением CHR).
Файл BGI – это графический интерфейс (Borland Graphic Interface), обеспечивающий взаимодействие программ с графическими устройствами.
Перед работой программы в графических режимах вызывается функция initgraph, которая определяет тип адаптера и загружает в память соответствующий BGI-драйвер. Функция closergaph выгружает графический драйвер из памяти и восстанавливает текстовый режим.
Для работы будем использовать следующие драйверы: CGA.BGI – драйвер для CGA, MCGA;
EGAVGA.BGI – драйвер для EGA, VGA;
IBM8514.BGI - драйвер для IBM8514 (driver = 6, mode= 0 | 1).
Инициализация
void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);
initgraph инициализирует графическую систему посредством загрузки с диска графического драйвера (или подтверждения работоспособности заре гистрированного драйвера) и перевода системы в графический режим.
initgraph(&gdriver, &gmode, "");
errorcode = graphresult(); /* контроль на наличие ошибок */ if (errorcode != grOk)
{
printf("Ошибка графики: %s\n", grapherrormsg(errorcode)); printf("Нажмите любую клавишу для останова:");
getch();
exit(1);
}
void far detectgraph(int far *graphdriver, int far *graphmode); detectgraph определяет графический адаптер вашей системы и
выбирает режим, обеспечивающий максимальное разрешение для этого адаптера. Если графическое оборудование не будет найдено, параметру *graphdriver будет присвоено значение grNotDetected (-2), и graphresult также вернет grNotDetected (-2).
void far closegraph(void);
closegraph освобождает всю память, выделенную для графической системы, и возвращает экран в режим, в котором он был перед вызовом
Нижний колонтитул |
1 |
Нижний колонтитул справа |
BGI графика. Функции
функции initgraph. (Освобождение памяти от элементов графической системы, таких как драйверы, шрифты и внутренние буферы, осуществляется через вызов _graphfreemem.)
Управление графическими режимами и их анализ:
detectgraph, initgraph, closegraph, graphdefaults, cleardevice, installuserdriver, registrbgidriver, restorecrtmode, setgraphmode, setwritemode, getgraphmode, getmoderange, getmaxmode, getmodename, getdrivername, graphresult, grapherrormsg
Рисование графических примитивов и фигур:
а) Управление текущим указателем: moveto, moverel, getmaxx, getmaxy, getx,gety.
б) Рисование: line, lineto, linerel, arc, getarccoords, circle, ellipse, rectangle, drawpoly.
в) Стиль линий и коэффициент сжатия изображения: setlinestyle, getlinestyle, setaspectratio, getaspectratio.
Управление цветами и шаблонами заполнения (заливками):
setcolor, getcolor, setbkcolor, getbkcolor, getmaxcolor, getpalette, getpalettesize, getdefaultpalette, setpallete, setallpallete, setrgbpalette, setfillstyle, setfillpattern, getfillpattern, getfillsetting, setgraphbufsize, fillpoly, fillelipse, sector, floodfill, pieslice, bar, bar3d.
Битовые операции:
putpixel, getpixel, imagesize, getimage, putimage.
Управление страницами: setactivepage, setvisualpage.
Графические окна: setviewport, setviewsetting, clearviewport
Управление выводом текста:
registerbgifont, installuserfont, outtext, outtextxy, settextstyle, settextjustify, setusercharsize, gettexsetting, textheight, textwidth)
Константы графических драйверов
-----------------------------------------------
Константа graphics_drivers |
Числовое значение |
|
----------------------------------------------- |
||
DETECT |
0 |
(требование автоопределения) |
CGA |
1 |
|
MCGA |
2 |
|
EGA |
3 |
|
EGA64 |
4 |
|
EGAMONO |
5 |
|
IBM8514 |
6 |
|
VGA |
9 |
|
-----------------------------------------------
Нижний колонтитул |
2 |
Нижний колонтитул справа |
BGI графика. Функции
Графические режимы
-----------------------------------------------------------------
графический |
graphics_modes Значение Колонок |
Палитра Количество |
|||||
драйвер |
|
|
X строк |
|
страниц |
||
----------------------------------------------------------------- |
|||||||
CGA |
CGAC0 |
0 |
320 |
X 200 |
C0 |
|
1 |
|
CGAC1 |
1 |
320 |
X 200 |
C1 |
|
1 |
|
CGAC2 |
2 |
320 |
X 200 |
C2 |
|
1 |
|
CGAC3 |
3 |
320 |
X 200 |
C3 |
ЦВЕТА |
1 |
|
CGAHI |
4 |
640 |
X 200 |
2 |
1 |
|
EGA |
EGALO |
0 |
640 |
X 200 |
16 |
ЦВЕТОВ |
4 |
|
EGAHI |
1 |
640 |
X 350 |
16 |
ЦВЕТОВ |
2 |
EGA64 |
EGA64LO |
0 |
640 |
X 200 |
16 |
ЦВЕТОВ |
1 |
|
EGA64HI |
1 |
640 |
X 350 |
4 |
ЦВЕТА |
1 |
VGA |
VGALO |
|
0 640 |
X 200 |
16 |
ЦВЕТОВ |
2 |
|
VGAMED |
|
1 640 |
X 350 |
16 |
ЦВЕТОВ |
2 |
|
VGAHI |
|
2 640 |
X 480 |
16 |
ЦВЕТОВ |
1 |
IBM8514 |
IBM8514HI |
1 |
1024 X 768 |
256 ЦВЕТОВ |
|
|
|
IBM8514LO |
0 |
640 |
X 480 |
256 ЦВЕТОВ |
|
----------------------------------------------------------------- |
||||||
Возвращаемое |
initgraph всегда |
устанавливает внутренний код |
||||
значение |
ошибки; причем в |
|
случае |
успешного завершения |
||
|
данный код устанавливается в 0. В случае ошибки |
|||||
|
*graphdriver устанавливается в -2, -3, -4 |
или |
||||
|
-5, а graphresult такие же значение, как предс- |
|||||
|
тавлено ниже: |
|
|
|
|
|
|
grNotDetected |
-2 |
Не может определить тип |
|
||
|
grFileNotFound |
-3 |
графической платы |
|
||
|
Не может найти файл драйвера |
|||||
|
grInvalidDriver -4 |
Неправильный драйвер |
не |
|||
|
grNoLoadMem |
-5 |
Для загрузки |
драйвера |
||
|
|
|
хватает памяти |
|
-----------------------------------------------------------
Константа, присваиваемая номеру цвета (значение |
|||
Номер |
1 |
пиксела) |
|
палитры |
2 |
3 |
0 |
----------------------------------------------------------- |
||
CGA_LIGHTGREEN |
CGA_LIGHTRED |
CGA_YELLOW |
|
1 |
(СВЕТЛОЗЕЛЕНЫЙ) |
(РОЗОВЫЙ) |
(ЖЕЛТЫЙ) |
CGA_LIGHTCYAN |
CGA_LIGHTMAGENTA |
CGA_WHITE |
|
2 |
(СВЕТЛОСИНИЙ) |
(СВЕТЛОМАЛИНОВЫЙ) |
(БЕЛЫЙ) |
CGA_GREEN |
CGA_RED |
CGA_BROWN |
|
3 |
(ЗЕЛЕНЫЙ) |
(КРАСНЫЙ) |
(КОРИЧНЕВЫЙ) |
CGA_CYAN |
CGA_MAGENTA |
CGA_LIGHTGREY |
|
|
(СИНИЙ) |
(МАЛИНОВЫЙ) |
(СВЕТЛОСЕРЫЙ) |
-----------------------------------------------------------
Нижний колонтитул |
3 |
Нижний колонтитул справа |
BGI графика. Функции
--------------------------------------------------------
Числовое |
Символьное имя |
значение |
|
--------------------------------------------------------
0 |
BLACK |
(ЧЕРНЫЙ) |
|
1 |
BLUE |
(ГОЛУБОЙ) |
|
2 |
GREEN |
(ЗЕЛЕНЫЙ) |
|
3 |
CYAN |
(СИНИЙ) |
|
4 |
RED |
(КРАСНЫЙ) |
|
5 |
MAGENTA |
|
(МАЛИНОВЫЙ) |
6 |
BROWN |
(КОРИЧНЕВЫЙ) |
|
7 |
LIGHTGREY |
(СВЕТЛОСЕРЫЙ) |
|
8 |
DARKGREY |
|
(ТЕМНОСЕРЫЙ) |
9 |
LIGHTBLUE |
(СВЕТЛОГОЛУБОЙ) |
|
10 |
LIGHTGREEN |
(СВЕТЛОЗЕЛЕНЫЙ) |
|
11 |
LIGHTCYAN |
(СВЕТЛОСИНИЙ) |
|
12 |
LIGHTRED |
|
(РОЗОВЫЙ) |
13 |
LIGHTMAGENTA |
(СВЕТЛОМАЛИНОВЫЙ) |
14YELLOW (ЖЕЛТЫЙ)
15WHITE (БЕЛЫЙ)
--------------------------------------------------------
EGA_ COLORS (graphics |
mode) |
|
|
|||
_____________________________ |
|
|
||||
CONSTANT |
|
¦VALUE¦ CONSTANT |
¦VALUE |
|||
---------------EGA_BLACK |
+----- |
0 |
+ |
------------------EGA _ DARKGRAY |
+----- |
|
¦ |
¦ |
¦ 56 |
|
|||
EGA_BLUE |
¦ |
1 |
¦ |
EGA _ LIGHTBLUE |
¦ 57 |
|
EGA_GREEN |
¦ |
2 |
¦ |
EGA _ LIGHTGREEN |
¦ 58 |
|
EGA_CYAN |
¦ |
3 |
¦ |
EGA _ LIGHTCYAN |
¦ 59 |
|
EGA_RED |
¦ |
4 |
¦ |
EGA _ LIGHTRED |
¦ 60 |
|
EGA_MAGENTA |
¦ |
5 |
¦ |
EGA _ LIGHTMAGENTA |
¦ 61 |
|
EGA_LIGHTGRAY |
¦ |
7 |
¦ |
EGA _ YELLOW |
¦ 62 |
|
EGA_BROWN |
¦ 20 |
¦ |
EGA _ WHITE |
¦ 63 |
|
Нижний колонтитул |
4 |
Нижний колонтитул справа |