Ir para conteúdo
Fórum Script Brasil
  • 0

Efeito Alpha (fade) Em Componentes Do Delphi


Guest Luzia

Pergunta

:( :( :( :(

Eu preciso urgentemente saber como criar o efeito alpha (fade in) no Delphi.Gostaria de saber como posso criá-lo em um botão via codificação (criar o componente) ou se alguém tiver um componente que faça isso por favor me envie!!!Se não tiver um botão pode ser um label, a gente dá um jeito mas por favor me ajudem!!!!!!!!

Eu sou iniciante,por favor sejam claros nas respostas.Obrigada.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Segue abaixo uma rotina de blend (mistura) a qual talvez você possa adaptar a sua necessidade.

No meu teste adicionei um Timer (com a propriedade Interval = 150) e dois Images ao form. No evento OnTimer, Valor (que foi inicializado com 0) é incrementado em 4 - isto resultará no efeito Fade-In. Se começar em 100 e trocar Inc(Valor, 4) por Dec(Valor, 4) você obterá o Fade-Out.

A procedure BlendBitmap, recebe como source um Bitmap para facilitar a reutilização em sua aplicação (você pode carregar um bitmap a partir de resources), já Dest deverá ser um Image. BlendColor representa a cor a qual o bitmap deverá ser misturado e BlendValue é o percentual a misturar de 0 a 100.

procedure BlendBitmap(Source :TBitmap; Dest :TImage; BlendColor :TColor; BlendValue :byte);
var
  X, Y,
  R, G, B,
  PR, PG, PB :Integer;
  blColor :LongInt;
  scColor :TColor;
  Percent :Single;
  tmpBitmap :TBitmap;
begin
  if BlendValue > 100 then
    BlendValue := 100;
  tmpBitmap := TBitmap.Create;
  try
  // copia bitmap de origem para o temporário (o qual será modificado)
    tmpBitmap.Assign(Source);
  // Calcula percentual a aplicar
    Percent := BlendValue/100;
  // obtém as componentes da cor da imagem fonte
    blColor := ColorToRGB(BlendColor);
    R := (blColor and $000000FF);        // Red
    G := (blColor and $0000FF00) shr 8;  // Green
    B := (blColor and $00FF0000) shr 16; // Blue
  // varre todo o bitmap de origem
    for X := 0 to tmpBitmap.Width -1 do
      for Y := 0 to tmpBitmap.Height -1 do
      begin
       // obtém as componentes da cor da imagem fonte
        scColor := tmpBitmap.Canvas.Pixels[X, Y];
        PR := (scColor and $000000FF);          // % Red
        PG := ((scColor and $0000FF00) shr 8);  // % Green
        PB := ((scColor and $00FF0000) shr 16); // % Blu
       // calcula o nível de mistura e determina novo valor para os componentes do pixel
        PR := Trunc(R +((PR -R) *Percent));
        PG := Trunc(G +((PG -G) *Percent));
        PB := Trunc(B +((PB -B) *Percent));
      // atribui o pixel calculado ao bitmap
        tmpBitmap.Canvas.Pixels[X, Y] := RGB(PR ,PG, PB);
      end;
   // copia o bitmap temporário para o destino
    Dest.Picture.Bitmap.Assign(tmpBitmap);
  finally
    tmpBitmap.Free;
  end;
end;


var
  Valor :Byte;
  Blending :Boolean;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Valor < 100 then
  begin
    if not Blending then
    begin
      Blending := True;
      BlendBitmap(Image1.Picture.Bitmap, Image2, Self.Color, Valor);
      Inc(Valor, 4);
      Blending := False;
     end;
  end else
    Timer1.Enabled := False;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Valor := 0;
  Blending := False;
  Timer1.Enabled := True;
end;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...