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

возвращает текущий цвет фона.