эффект погасания
На Паскале можно сделать, так сказать, эффект погасания картинки? Если да, то как?
В палитровом режиме меняешь палитру циклически для всех цветов до нуля. Для непалитрового режима нужно перерисовывать изображение.
В палитровом режиме меняешь палитру циклически для всех цветов до нуля. Для непалитрового режима нужно перерисовывать изображение.
А что значит палитровый и непалитровый режим?
А что значит палитровый и непалитровый режим?
Палитровый - это когда цвет точки задается номером в палитровой таблице (в которой записаны соответствующие значения RGB). Например, видеорежимы с 4-мя, 16-ю и 256-ю цветами - палитровые. Если цвет точки в таком режиме, скажем 2, то видеоадаптер при отрисовке полезет в таблиту палитры, найдет там для индекса 2 соответствующие RGB значения и отрисует точку в соответствующем цвете. В непалитровом режиме цвет точки определяется непосредственно значением RGB.
Палитровый - это когда цвет точки задается номером в палитровой таблице (в которой записаны соответствующие значения RGB). Например, видеорежимы с 4-мя, 16-ю и 256-ю цветами - палитровые. Если цвет точки в таком режиме, скажем 2, то видеоадаптер при отрисовке полезет в таблиту палитры, найдет там для индекса 2 соответствующие RGB значения и отрисует точку в соответствующем цвете. В непалитровом режиме цвет точки определяется непосредственно значением RGB.
У меня 16-ти цветный видеорежим, но разве этот эффект возможен с таким количеством цветов?
А что надо, чтоб было 256 цветов? [для TP7]Специальный модуль? Ведь в модуле Graph только 16 цветов, насколько я знаю.
У меня 16-ти цветный видеорежим, но разве этот эффект возможен с таким количеством цветов?
А что надо, чтоб было 256 цветов? [для TP7]Специальный модуль? Ведь в модуле Graph только 16 цветов, насколько я знаю.
Для 16-ти цветового режима работает стандартная процедура SetRGBPalette(). Эффект угасания с ней можно реализовать, например, так:
colors : array [0..15] of record r, g, b : byte end;
r, g, b, c : byte;
i : integer
. . . . .
begin
{ Saving current palette }
for i:=0 to 15 do
GetRGBPalette(i, colors.r, colors.g, colors.b);
{ Palette fading }
for i:=255 to 0 do
for c:=0 to 15 do
begin
GetRGBPalette(c, r, g, b);
r:= r - 1;
if r < 0 then r:= 0;
g:= g - 1;
if g < 0 then g:= 0;
b:= b - 1;
if b < 0 then b:= 0;
SetRGBPalette(c, r, g, b);
delay(10);
end;
end;
. . . . . .
Ну как-то так. Уже не помню точно...
А для 256-ти цветного режима к трупоПаскалю bgi драйвер был - поищи в нете. Режим 320 на 200, 256цветов можно установить самому вручную, правда всё рисовани тоже придется вручную писать.
RGB - не более 64!
port[3f8]:=(color)
port[3f9]:=(r)
port[3f9]:=(g)
port[3f9]:=(b)
Считать палитру:
port[3f7]:=(color)
(r):=port[3f9]
т.д.