Краски, палитры, заполнения
Процедура SetColor
Устанавливает текущий цвет для выводимых линий и символов. Заголовок:
Procedure SetColor(Color: Word);
Здесь Color – текущий цвет.
В модуле Graph определены точно такие же константы для задания цвета, как и в модуле CRT (см. п.13.2).
Функция GetColor
Возвращает значение типа Word, содержащее код текущего цвета. Заголовок:
Function GetColor: Word;
Функция GetMaxColor
Возвращает значение типа Word, содержащее максимальный доступный код цвета, который можно использовать для обращения к SetColor. Заголовок:
Function GetMaxColor: Word;
Процедура SetBkColor
Устанавливает цвет фона. Заголовок:
Procedure SetBkColor(Color: Word);
Здесь Color – цвет фона.
В отличие от текстового режима, в котором цвет фона может быть только темного оттенка, в графическом режиме он может быть любым. Установка нового цвета фона немедленно изменяет цвет графического экрана. Это означает, что нельзя создать изображение, два участка которого имели бы разный цвет фона. Для CGA – адаптера в режиме высокого разрешения установка цвета фона изменяет цвет активных пикселей.
Замечу, что после замены цвета фона на любой, отличный от 0 (Black) цвет, Вы не сможете более использовать цвет 0 как черный, он будет заменяться на цвет фона, т.к. процедуры модуля Graph интерпретируют цвет с номером 0 как цвет фона. Это означает, в частности, что Вы уже не сможете вернуть фону черный цвет!
Если Ваш ПК оснащен цветным экраном, следующая программа продемонстрирует работу процедуры SetBkColor. Программа выводит десять вложенных друг в друга прямоугольников, после чего циклически меняет цвет фона. Для выхода из программы достаточно нажать на любую клавишу.
Uses Graph, CRT; const NC: array [0..15] of String [12] = ('Black','Blue','Green','Cyan','Red','Magenta', ' Brown','LightGray','DarkGray','LightBlue', 'LightGreen1,'LightCyan1,'LightRed', 'LightMagenta','Yellow','White'); var d, r, e, k, color, dx, dy: Integer; begin {Инициируем графику} d: = Detect; InitGraph(d, r, ' '); e: = GraphResult; if e <> grOK then WriteLn(GraphErrorMsg(e)) else begin {Выводим текст в центре экрана} OutTextXY(200,GetMaxY div 2,'BACKGROUND COLOR'); dx: = GetMaxX div 30; {Приращение длины} dy: = GetMaxY div 25; {Приращение высоты} for k: = 0 to 9 do{Выводим 10 прямоугольников} Rectangle(k*dx,k*dy,GetMaxX-k*dx,GetMaxY-k*dy); color: = black; {Начальный цвет фона} repeat {Цикл смены фона} SetBkColor(color); SetFillStyle(0,Color); Bar(345,GetMaxY div 2.440,GetMaxY div 2+8); OutTextXY(345,GetMaxY div 2,NC[color]); delay(1000); inc(color); if color > White then color: = Black until KeyPressed; if ReadKey=#0 then k: = ord(ReadKey); CloseGraph end end.