Страница 9 из 56
растра может быть равным 0 и 1. Из-за особенностей самого CGA,
аппаратура, в действительности, воспринимает цвет изображения как
цвет фона, поэтому вы можете устанавливать его с помощью функции
setbkcolor. (Удивительно, но факт.)
Возможные цвета изображения приведены в предыдущей таблице.
CGA использует определенный цвет для отображения всех точек раст-
ра, значение которых равно 1.
Режимы, работающие описанным образом: CGAHI, MCGAMED,
MCGAHI, ATT400MED, ATT400HI.
Функции управления палитрой для CGA
Так как палитра CGA предопределена, вам не следует использо-
вать функцию setallpalette. Кроме того, функцию setpalette(index,
actual_color) вы можете использовать только при index=0. (Это яв-
ляется альтернативным способом для установки цвета фона на CGA в
actual_color.)
Управление цветом на EGA и VGA
------------------------------
На EGA палитра содержит 16 элементов из 64 возможных цветов,
причем каждый из них может быть установлен пользователем.
- 69,70 -
Вы можете получить текущую палитру с помощью функции
getpalette, которая заполняет структуру размером с палитру (16) и
массив действительных элементов палитры ("номера цветов для аппа-
ратуры", хранящихся в палитре). С помощью setpalette вы можете
изменять каждый цвет палитры поодиночке, а с помощью
setallpalette - все сразу.
По умолчанию палитра EGA соответствует 16 цветам CGA, приве-
денным в предыдущей таблице, - черный соответствует элементу 0,
голубой - 1, ..., белый - 15. В GRAPHICS.H описаны константы, со-
ответствующие значениям аппаратурных цветов: EGA_BLACK, EGA_WHITE
и т.д. Кроме того, вы можете получить эти величины с помощью
getpalette.
Поведение функции setbkcolor(color) различается на адаптерах
CGA и EGA. На EGA setbkcolor переносит величину действительного
цвета из color в нулевой элемент палитры.
Как только цвета установлены, драйвер VGA начинает вести се-
бя так же, как драйвер EGA. Отличие лишь в том, что у него более
высокое разрешение (и соответственно более мелкие точки растра).
Обработка ошибок в графическом режиме
-------------------------------------
Вот функции для обработки ошибок в графическом режиме:
=================================================================
grapherrormsg возвращает строку с сообщением об ошибке для за-
данного кода ошибки
graphresult возвращает код ошибки для последней графической
операции, вызвавшей затруднения
=================================================================
Если при вызове функции из графической библиотеки возникает
ошибка (например, не найден шрифт, заданный settextstyle), то вы-
рабатывается соответствующий внутренний код ошибки. Этот код мож-
но узнать при помощи вызова функции graphresult. Определены сле-
дующие коды ошибок:
- 71,72 -
-----------------------------------------------------------------
код символическая соответствующая строка с сообщением
ошибки константа об ошибке
-----------------------------------------------------------------
0 grOK No error (нет ошибки)
-1 grNoInitGraph (BGI) graphics not installed
(графика не запущена, используйте
initgraph)
-2 grNotDetected Graphics hardware not detected (нет
оборудования)
-3 grFileNotFound Device driver file not found
(не найден файл драйвера устройства)
-4 grInvalidDriver Invalid device driver file
(неверный файл драйвера устройства)
-5 grNoLoadMem Not enough memory to load driver
(не хватает памяти для загрузки драйве-
ра)
-6 grNoScanMem Out of memory in scan fill
(выход за пределы памяти при сканирова-
нии)
-7 grNoFloodMem Out of memory in flood fill
(выход за пределы памяти при "лавин-
ном" заполнении)
-8 grFontNotFound Font file not found
(не найден файл шрифта)
-9 grNoFontMem Not enough memory to load font
(не хватает памяти для загрузки шрифта)
-10 grInvalidMode Invalid graphics mode for selected
driver (недопустимый графический режим
для заданного драйвера)
-11 grError Graphics error (ошибка графики)
-12 grIOerror Graphics I/O error (ошибка ввода/вывода
в графическом режиме)
-13 grInvalidFont Invalid font file
(неверный файл шрифта)
-14 grInvalidFontNum Invalid font number
(неверный номер шрифта)
-15 grInvalidDeviceNum Invalid device number
(неверный номер устройства)
-18 grInvalidVersion Invalid version of file
(недопустимая версия файла)
-----------------------------------------------------------------
- 73,74 -
В результате обращения grapherrormsg(graphresult()) будет
возвращена соответствующая строка (см. таблицу).
Возвращаемый код ошибки изменяется лишь тогда, когда ка-
кая-либо из графических функций сообщает об ошибке. Зануляется он
только в результате успешного выполнения функции initgraph или
при вызове graphresult. Поэтому, если вы хотите знать, какая гра-
фическая функция какую ошибку возвратила, вам следует сохранять
значение graphresult во временной переменной.
Запрос состояния
----------------
Вот перечень функций запроса состояния в графическом режиме:
=================================================================
getarccoords возвращает информацию о координатах последнего
обращения к arc или ellipse
getaspectratio возвращает коэффициент сжатия графического эк-
рана
getbkcolor возвращает текущий цвет фона
getcolor возвращает текущий цвет рисования
getdrivename возвращает имя текущего графического драйвера
getfillpattern возвращает заданный пользователем шаблон закра-
шивания
getfillsettings возвращает информацию о текущих шаблоне закра-
шивания и цвете
getgraphmode возвращает текущий графический режим
getlinesettings возвращает текущие стиль, шаблон и толщину ли-
нии
getmaxcolor возвращает максимальное допустимое значение
- 75,76 -
точки растра
getmaxmode возвращает максимальный номер режима для теку-
щего драйвера
getmaxx возвращает текущее разрешение по оси x
getmaxy возвращает текущее разрешение по оси y
getmodename возвращает имя данного режима драйвера
getmoderange возвращает диапазон режимов для данного драй-
вера
getpalette возвращает текущую палитру и ее размер
getpixel возвращает цвет точки растра (x,y)
gettextsettings возвращает текущие шрифт, направление, размер и
выравнивание текста
getviewsettings возвращает информацию о текущем графическом ок-
не
getx возвращает координату x текущей позиции
gety возвращает координату y текущей позиции
=================================================================
В каждой категории графических функций Турбо Си имеется хотя
бы одна функция запроса состояния. Эти функции были упомянуты в
соответствующих разделах, а здесь они собраны все вместе. Все они
начинаются с get... (исключение составляет категория функций, об-