19.5.4. Опрос и установка цветов пера и фона
Различные адаптеры поддерживают разное количество цветов, выводимых одновременно на экран в графическом режиме. Но для всех BGI-драйверов оно ограничено диапазоном 0..15. Нумерация и названия цветов совпадают с теми, которые были приведены для текстовых цветов в гл. 15 «Модуль CRT», а имена констант, обозна-
- 442 -
чающих цвета (за исключением Blink), продублированы в модуле Graph.
Максимальный номер цвета, воспринимаемый данным адаптером в текущем графическом режиме, может быть получен при помощи функции
GetMaxColor : Word
Например, для CGA в режиме 320x200 (4 цвета на экране) эта функция возвращает число 3, а для CGA в режиме 640x200 (только два цвета) — 1. Эту информацию можно использовать для переопределения цветов:
TYPE
ColorSetType = Array [0..15] of Byte; { тип набор }
VAR
CS : ColorSetType; { набор цветов }
i, GMC : Word;
BEGIN
...
GMC := Succ( GetMaxColor );
for i:=0 to 15 do CS[ i ] := i mod GMC;
...
end.
После такого заполнения матрицы-набора цветов можно обращаться к любому цвету из диапазона 0..15, например CS [White] (это то же, что и CS[15]), даже в режиме Hercules — значение элементов массива никогда не превзойдет GetMaxColor.
На экране всегда различаются цвет фона и цвет пера. Все процедуры изображения фигур, если не содержат в себе явной установки цвета, рисуют эти фигуры цветом пера (как символы в текстовом режиме). Этот цвет устанавливается процедурой
SetColor( Color : Word )
Цвет фона — всегда един в поле экрана. Он может быть изменен процедурой
SetBkColor( Color : Word )
После использования этой процедуры цвет экрана сразу же меняется на заданный. Параметр Color не должен превышать текущее значение GetMaxColor. Цветом фона может быть любой из разрешенных цветов, в том числе и яркий. По умолчанию и при реинициализации графики цвет фона равен 0 (Black), а цвет пера равен значению функции GetMaxColor.
- 443 -
Всегда можно опросить текущие установки цвета. Функция
GetColor : Word
возвращает значение текущего цвета пера, а функция
GetBkColor : Word
возвращает текущий цвет фона.