Процедура SetAllPalette

Изменяет одновременно несколько цветов палитры. Заголовок процедуры:

Procedure SetAllPalette(var Palette);

Параметр Palette в заголовке процедуры описан как нетипизированный параметр. Первый байт этого параметра должен содержать длину N палитры, остальные N байты – номера вновь устанавливаемых цветов в диапазоне от -1 до MaxColors. Код -1 означает, что соответствующий цвет исходной палитры не меняется.

В следующей программе происходит одновременная смена сразу всех цветов палитры.

Uses Graph, CRT;

var

Palette: array [0..MaxColors] of Shortint;

d,r,e,k: Integer;

begin

{Инициируем графику}

d := Detect; InitGraph(d, r, '');

e := GraphResult; if e <> grOk then

WriteLn(GraphErrorMsg(e))

else

begin

{Выбираем толстые сплошные линии}

SetLineStyle(SolidLn, 0, ThickWidth);

{Выводим линии всеми доступными цветами}

for k := 1 to GetMaxColor do

begin

SetColor(k);

Line(GetMaxX div 3,k*10,2*GetMaxX div 3,k*10)

end;

Palette[0] := MaxColors; {Размер палитры}

repeat {Цикл смены палитры}

for k := 1 to MaxColors do

Palette[k] := Random(succ(MaxCoLors));

SetAllPalette(Palette)

until KeyPressed;

if ReadKey=#0 then k := ord(ReadKey);

CloseGraph

end

end.