Краски, палитры, заполнения
Процедура GetFillPattern
Возвращает образец заполнения, установленный ранее процедурой SetFillPattern. Заголовок:
Procedure GetFillPattern(var Pattern: FillPatternType);
Здесь Pattern – переменная типа FillPatternType, в которой возвращается образец заполнения.
Если программа не устанавливала образец с помощью процедуры SetFillPattern, массив Pattern заполняется байтами со значением 255 ($FF).
Процедура GetFillSettings
Возвращает текущий стиль заполнения. Заголовок:
Procedure GetFillSettings(var Pattlnfo: FillSettingsType);
Здесь Pattlnfo – переменная типа FillSettingsType, в которой возвращается текущий стиль заполнения.
В модуле Graph определен тип:
type FillSettingsType = record Pattern: Word; {Образец} Color: Word {Цвет} end;
Поля Pattern и Color в этой, записи имеют то же назначение, что и аналогичные параметры при обращении к процедуре SetFillStyle.
Процедура SetRGBPalette
Устанавливает цветовую гамму при работе с дисплеем IBM 8514 и адаптером VGA. Заголовок:
Procedure SetRGBPalette(ColNum,RedVal, GreenVal,BlueVal:Integer);
Здесь:
- ColNum – номер цвета;
- RedVal, GreenVal, BlueVal – выражения типа Integer, устанавливающие интенсивность соответственно красной, зеленой и синей составляющих цвета.
Эта процедура может работать только с дисплеем IBM 8514, а также с адаптером VGA, использующим видеопамять объемом 256 Кбайт. В первом случае параметр ColNum задается числом в диапазоне 0…255, во втором – в диапазоне 0…15. Для установки интенсивности используются 6 старших разрядов младшего байта любого из параметров RedVal, GreenVal, BlueVal.
В следующей программе в центре экрана выводится прямоугольник белым цветом, после чего этот цвет случайно изменяется с помощью процедуры SetRGBPalette. Для выхода из программы нужно нажать любую клавишу.
Uses Graph,CRT; var Driver, Mode, Err, xl, yl: Integer; begin {Инициируем графический режим} Driver: = Detect; InitGraph(Driver, Mode, ''); Err: = GraphResult; if ErroO then WriteLn(GraphErrorMsg(Err)) else if Driver in [IBM8514, VGA] then begin {Выводим прямоугольник в центре экрана} x1: = GetMaxX div 4; y1: = GetMaxY div 4; SetColor(lS); Bar(x1,y1.3*x1.3*y1); {Изменяем белый цвет на случайный} while not KeyPressed do SetRGBPalette(15,Random(256),Random(256),Random(256)); CloseGraph end else begin CloseGraph;. WriteLn('Адаптер не поддерживает ', 'RGB-режим управления цветами') end end.