Описание функций Си

       

Initgrap



     initgraph

Функция Инициализирует графическую систему.

Синтаксис #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 и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.

Смотри также

Пример:

#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; }


Содержание раздела