Form com aparencia gradiente
Gostaria de saber como faço para criar um form com uma aparência gradiente igual a tela de abertura do Live Messenger.
Visualdesigner
Curtidas 0
Respostas
Paulocesar1301
24/10/2006
sinceramente, ainda não vi a tela do LiveMessenger, mas esse é um código que gera um gradiente no em qualquer componente que tenha Canvas:
[b:16b9c4dbac]peguei aki no fórum mesmo[/b:16b9c4dbac]
[b:16b9c4dbac]peguei aki no fórum mesmo[/b:16b9c4dbac]
procedure DrawGradient(Canvas: TCanvas; ARect: TRect; Colors: array of TColor); var I, NumColors, IColor, PixPerColor: Integer; R, G, B, IR, IG, IB: Single; begin NumColors := Length(Colors); PixPerColor := (ARect.Right - ARect.Left) div (NumColors - 1); R := GetRValue(Colors[0]); G := GetGValue(Colors[0]); B := GetBValue(Colors[0]); IR := GetRValue(Colors[1]) - GetRValue(Colors[0]); IG := GetGValue(Colors[1]) - GetGValue(Colors[0]); IB := GetBValue(Colors[1]) - GetBValue(Colors[0]); IR := IR/PixPerColor; IG := IG/PixPerColor; IB := IB/PixPerColor; IColor := 1; for I := ARect.Left to ARect.Right do begin if ((I - ARect.Left) mod PixPerColor = 0) and (I <> ARect.Left) then begin R := GetRValue(Colors[IColor]); G := GetGValue(Colors[IColor]); B := GetBValue(Colors[IColor]); IR := GetRValue(Colors[IColor + 1]) - GetRValue(Colors[IColor]); IG := GetGValue(Colors[IColor + 1]) - GetGValue(Colors[IColor]); IB := GetBValue(Colors[IColor + 1]) - GetBValue(Colors[IColor]); IR := IR/PixPerColor; IG := IG/PixPerColor; IB := IB/PixPerColor; Inc(IColor); end; Canvas.Pen.Color := RGB(Trunc(R), Trunc(G), Trunc(B)); Canvas.MoveTo(I, ARect.Top); Canvas.LineTo(I, ARect.Bottom); R := R + IR; G := G + IG; B := B + IB; end; end; procedure TForm1.FormCreate(Sender: TObject); begin DrawGradient(Form1.Image1.Canvas, Rect(0, 0, Form1.ClientWidth, Form1.ClientHeight), [clTeal, clWhite]); Application.ProcessMessages; end;
GOSTEI 0
Visualdesigner
24/10/2006
Gostei do efeito gradiente. Tem como colocar o efeito de cima para baixo ao invés de esquerda para direita?
GOSTEI 0
Paulocesar1301
24/10/2006
:oops: infelizmente minha ignorância delphiana aliada ao pouco tempo extra não me permitiram alterar essa função... apesar de ter pensado nisso também :oops:
GOSTEI 0
Visualdesigner
24/10/2006
Encontrei um componente Free na net que pode te ajudar também. Procure por ExpressForumLibrary
http://www.devexpress.com/
http://www.devexpress.com/
GOSTEI 0
Paulocesar1301
24/10/2006
vou usar em grande parte do tempo o TurboExplorer... estou procurando não usar componentes... mas vlw assim mesmo
GOSTEI 0
Titanius
24/10/2006
Gostei do efeito gradiente. Tem como colocar o efeito de cima para baixo ao invés de esquerda para direita?
Olá, creio que mudando esta parte do código
Canvas.MoveTo(I, ARect.Top); Canvas.LineTo(I, ARect.Bottom);
para
Canvas.MoveTo(I, ARect.Left); Canvas.LineTo(I, ARect.Right);
Ainda [b:4d88d64cc6]não[/b:4d88d64cc6] testei, mas pela lógica deve ser isto...
GOSTEI 0
Paulocesar1301
24/10/2006
a lógica da informática é que ela não tem lógica :lol:
:( já tinha testado isso e não rodou... ficava exatamente igual :(
:( já tinha testado isso e não rodou... ficava exatamente igual :(
GOSTEI 0