Fade in/out
Pessoal tenho um form. Nesse form tenho dois botões(button1 e button2) e uma imagem(image1). Tenho um código que faz com que ao clicar no button1, essa imagem vai perdendo as cores até ficar totalmente sem nenhuma cor, ou seja, preta. Agora eu queria, se possível, quando clicasse no outro botão essa imagem voltasse as cores originais. Esse código já me ajudaria mas, a intenção é fazer o seguinte:
Tenho uma imagem onde:
0% = cor preta
e
100% = cor original
A imagem inicia com 50% da cor original
Quando eu clicar no button1 a imagem perde 25% da cor, se eu clicar de novo ela perde mais 25%, quando eu clicar no button2 o código reconhece a pocentagem atual e retorna para a porcentagem da imagem anterior ou seja, ela perdeu 50% da cor e voltou ao estado de 25% de cor perdida.
Quando eu clicar no button2 a imagem ganha 25% da cor, se eu clicar de novo ela ganha mais 25%, quando eu clicar no button1 o código reconhece a pocentagem atual e retorna para a porcentagem da imagem anterior ou seja, ela ganhou 50% da cor e voltou ao estado de 25% de cor ganha.
O código que eu citei no início está aqui:
procedure TForm1.Button1Click(Sender: TObject);
procedure FadeOut(const BMP:TImage; Pause:integer) ;
var
BytesPorScan : integer;
w,h : integer;
p : pByteArray;
counter : integer;
begin
{This only works with 24 or 32 bits bitmaps}
If Not (BMP.Picture.Bitmap.PixelFormat
in [pf24Bit, pf32Bit])
then raise exception.create
('Error, bitmap format not supported.') ;
try
BytesPorScan:=
Abs(Integer(BMP.Picture.Bitmap.ScanLine[1])-
Integer(BMP.Picture.Bitmap.ScanLine[0])) ;
except
raise exception.create('Error') ;
end;
//Diminuir o RGB para cada pixel único
for counter:=1 to 256 do
begin
for h:=0 to BMP.Picture.Bitmap.Height-1 do
begin
P:=BMP.Picture.Bitmap.ScanLine[h];
for w:=0 to BytesPorScan-1 do
if P^[w] >0 then P^[w]:=P^[w]-1;
end;
Sleep(Pause) ;
BMP.Refresh;
end;
end; //procedure FadeOut
begin //button1_click
FadeOut(Image1,5) ;
end;Discussão (1)
Carregando comentários...