Функция Инициализирует графическую систему.
Синтаксис #include
void far initgraph(int far *graphdriver,
int far *graphmode, char far *pathtodriver)
Файл, содержащий graphics.h
прототип
Описание initgraph инициализирует графическую систему
путем загрузки графического драйвера с диска
(или подтверждения работоспособности заре-
гестрированного драйвера) и переводит сис-
тему в графический режим.
Для того чтобы запустить графическую систе-
му, прежде всего вызовите функцию initgraph.
initgraph загружает графический драйвер и
переводит систему в графический режим.
Вы можете указать графической системе ис-
пользовать конкретный графический драйвер и
режим, или, чтобы она сама определила в процессе
работы привязанный к данной системе видеоадаптер
и выбратла соответствующий драйвер. Если вы указа-
ли initgraph автоопределение она вызывает
detectgraph для выбора графического драйвера и
режима. initgraph также переустанавливает все
графические параметры в их значения по умолча-
нию (текущая позиция, палитра, цвет, окно экрана,
и т. д.) и переустанавливает grapgresult в 0.
Обычно initgraph загружает графический драйвер
путем выделения памяти для драйвера (с помощью
функции _graphgetmem), затем загружает соответст-
вующий файл .BGI с диска. В противоположность этой
схеме динамической загрузки , вы можете присоеди-
нить файл графического драйвера (или несколько та-
ких файлов) непосредственно выполняемым файлом.
Смотрите более подробную информацию в BGIOBJ.
pathodriver определяeт маршрут по которому
initgraph будет искать графические драйверы.
initgraph сначала ищет по маршруту, определяемому
в pathtodriver, затем ( если их там нет) ищет в
текущей директории. Следовательно, если
pathtodriver равен NULL, файлы драйвера (*.BGI)
должны быть в текущей директории. Таким же путем
settexstyle будет искать файлы (.CHR), содержащие
шрифты.
*graphdriver - целое, которое определяет исполь-
зуемый графический драйвер. Вы можете задать его
значение, используя константу graphics_driver пе-
речисляемого типа, определенного в graphics.h и
показанного в следующей таблице.
________________________________________
graphics_drivers
константа численное значение
__________________________________________
DETECT 0 (запрашивает
автоопределе-
ние драйвера)
CGA 1
MCGA 2
EGA 3
EGA64 4
EGAMONO 5
IBM8514 6
HERCMONO 7
ATT400 8
VGA 9
PC3270 10
__________________________________________
*graphmode - целое, которое определяет исходный
графический режим (если *graphdriver не равен
DETECT, *graphmode устанавливается в наивысшее
разрешение, допустимое для данного драйвера). Вы
можете задать значение *graphmode, используя конс-
танту перечисляемого типа graphics_modes, опреде-
ленную в graphics.h и показанную в следующей таб-
лице:
---------------------------------------------------------------
Графическ. graphics Знач. Колонок Палитра Страниц
драйвер _modes * столбцов
---------------------------------------------------------------
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
MCGA MCGAC0 0 320 x 200 C0 1
MCGAC1 1 320 x 200 C1 1
MCGAC2 2 320 x 200 C2 1
MCGAC3 3 320 x 200 C3 1
MCGAMED 4 640 x 200 2цвета 1
MCGAHI 5 640 x 480 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
EGA- EGAMONOHI 3 640 x 350 2 цвета 1*
MONO EGAMONOHI 3 640 x 350 2 цвета 2**
HERC HERCMONOHI 0 720 x 348 2 цвета 2
AT400 ATT400C0 0 320 x 200 C0 1
ATT400C1 1 320 x 200 C1 1
ATT400C2 2 320 x 200 C2 1
ATT400C3 3 320 x 200 C3 1
ATT400MED 4 640 x 200 2 цвета 1
ATT400HI 5 640 x 400 2 цвета 1
VGA VGALO 0 640 x 200 16цветов 2
VGAMED 1 640 x 350 16цветов 2
VGAHI 2 640 x 380 16цветов 1
PC3270 PC3270HI 0 720 x 350 2 цвета 1
IBM8514 IBM8514HI 0 640 x 480 256цветов
IBM8514LO 0 1024 x 768 256цветов
* 64К на карте EGAMONO
** 256К на карте EGAMONO
--------------------------------------------------------------
Замечание:Основная причина вызова непосредственно
detectgraph состоит в переопределении графического
режима, который detectgraph рекомендовал
initgraph.
В приведенной таблице, элементы столбца "Палитра"
C0, C1, C2 и C3 относятся к четырем ранее опреде-
ленным четырехцветным палитрам, действительным для
CGA и совместимых систем. Вы можете выбрать цвет
фона( элемент #0 ), но остальные цвета не меняют-
ся. Эти палитры подробно описаны в главе 5 "Ви-
део-функции" в "Руководстве пользователя по Turbo
C " и суммированы в следующей таблице:
-----------------------------------------------------------
Номер Константа присвоенная значению пиксела
палитры 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_LIGHTGRAY
------------------------------------------------------------
После обращения к initgraph *graphdriver устанав-
ливается в текущий графический драйвер, а
*graphmode в текущий графический режим.
Возвращаемое initgraph всегда устанавливает внутренний
значение код ошибки. В случае успешного выполнения
код равен 0. В случае же ошибки
*graphdriver устанавливается в -2, -3, -4
или -5, и graphresult возвращает соответс-
твующие значения, перечисленные ниже:
-2 не может определить тип графической
карты (grNotDetected)
-3 не может найти файл драйвера
(grFileNotFound)
-4 неправильный драйвер (grInvalidDriver)
-5 недостаточно памяти для загрузки
драйвера (grNoLoadMem)
Переносимость Функция уникальна для Turbo C++. Она работает
только на компьютерах IBM PC и совместимых с ними,
оснащенных дисплейными адаптерами, поддерживающими
графический режим.
Смотри также closegraphdetectgraphgetdefaultpalettegetdrivernamegetgraphmodegetmoderangegraphdefault_graphgetmemgraphresultinstalluserdriverregisterbgidriverregisterbgifontrestorecrtmodesetgraphbufsizesetgraphmode
Пример:
#include
#include
#include
#include
int main(void)
{
/* требуется автоопределение */
int graphdriver = DETECT, gmode, errorcode;
/* мнмцмализация графического режима */
initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk) /* если ошибка */
{
printf("Ошибка :%s\n",grapherrormsg(errorcode));
printf("Для останова нажмите любую клавишу\n");
getch();
exit(1); /* завершение с кодом ошибки */
}
line(0,0,getmaxx(),getmaxy());
getch();
closegraph();
return 0;
}