Fórum Fade em Imagem #174734
13/08/2003
0
Tipo eu preciso alternar entre duas imagens, alguém tem uma idéia?
Okama
Curtir tópico
+ 0Posts
13/08/2003
Nildo
Tipo assim:
var nAux: TPoint; begin // -> Issu aki vai dentro de algum FOR nAux.x := Random(image1.width); nAux.y := Random(image1.Height); image1.canvas.pixels[nAux.x,nAux.y] := image2.canvas.pixels[nAux.x,nAux.y] end;
Entendeu? Faz algo do tipo, soh que em um FOR inteligente.
Eh q to meio sem tempo senao faria pra vc...
Eh um FADE bem feio.. mas da um efeito legal!
Gostei + 0
13/08/2003
Nildo
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;
{Decrease the RGB for each single pixel}
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
FadeOut(Image1,5);
end;
Gostei + 0
13/08/2003
Okama
O objetivo é alternar entre várias imagens, vou fazer alguns testes com as idéias que me passou.
Um abraço.
Gostei + 0
13/08/2003
Cebikyn
var res : TBitmap; bf : _BLENDFUNCTION; begin res := TBitmap.create; try res.width := i1.picture.width; res.height := i1.picture.height; res.assign(i1.picture.bitmap); bf.BlendOp := AC_SRC_OVER; bf.BlendFlags := 0; bf.SourceConstantAlpha := XXX; bf.AlphaFormat := 0; AlphaBlend(res.canvas.handle, 0,0,res.width,res.height,i2.picture.bitmap.Canvas.handle,0,0,res.width,res.height,bf); i3.Picture.assign(res); finally res.free; end;
Em que i1, i2 e i3 são TImages, i1 e i2 contem as imagens, i3 contem i2 sobre i1 (semi-trasparente). Você pode trabalhar também só com o TBitmap.
Para alternar as imagens, você deverá variar o valor de XXX de 0 (i1 sem modificação) até 255 (i2 é visto por completo) usando um TTimer ou um for to do.
Gostei + 0
13/08/2003
Okama
Pensei que AlphaBlend fosse somente para formulários. Agradeço mesmo assim.
Gostei + 0
13/08/2003
Nildo
Gostei + 0
15/08/2003
Cebikyn
Extraído da [i:d68a4a8d9c]Unit[/i:d68a4a8d9c] [b:d68a4a8d9c]Windows.pas[/b:d68a4a8d9c] (Delphi 6 Enterprise):
{$EXTERNALSYM AlphaBlend}
function AlphaBlend(DC: HDC; p2, p3, p4, p5: Integer; DC6: HDC; p7, p8, p9, p10: Integer; p11: TBlendFunction): BOOL; stdcall;Parece que a partir da versão 6 do Delphi, ele confunde a propriedade com a função, a pesar da referida função estar declarada na unit windows.pas que vem com o D6. Não sei porque...[img:d68a4a8d9c]http://www.guarany70ge.hpg.ig.com.br/ads/crash.gif[/img:d68a4a8d9c]
Gostei + 0
28/08/2003
Allen74
Por incrível que possa parecer, eu fiz uma pesquisa e o AlphaBlend, apesar de fazer parte da API do Windows, não é suportado pelo Windows 95 e nem pelo Windows Me.
Gostei + 0
19/08/2004
Luiz_aquino
mas eu gostaria de saber como faço para um botão quando passar com o mouse vai ficando mais forte, ele está meio transparente sem cor, aí vai aarecenendo a cor e ao sair faço o contrario
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)