Hola Compañeros Como siempre os pongo dos trozos de códigos nuevo, un procedure que dibuja una linea gradient y una funcion que hice para crear separaciones, espero os sirvan de ayuda
Código Delphi
[-]procedure DrawGradientLine(bCanvas:
TCanvas; X, Y, Width,height: integer;
StartColor, EndColor: TColor;Parejo:boolean);
var
fX,hy:integer;
dr,dg,db:Extended;
C1,C2:TColor;
r1,r2,g1,g2,b1,b2:Byte;
R,G,B:Byte;
cnt:integer;
begin
if Parejo=False then cnt:=0;
for HY := y to y+height - 1 do
begin
if Parejo=True then cnt := 0;
C1 := StartColor;
C2 := EndColor;
R1 := GetRValue(C1) ;
G1 := GetGValue(C1) ;
B1 := GetBValue(C1) ;
R2 := GetRValue(C2) ;
G2 := GetGValue(C2) ;
B2 := GetBValue(C2) ;
dr := (R2-R1) / Width;
dg := (G2-G1) / Width;
db := (B2-B1) / Width;
for fX := X to X + Width - 1 do
begin
R := R1+Ceil(dr*cnt) ;
G := G1+Ceil(dg*cnt) ;
B := B1+Ceil(db*cnt) ;
bCanvas.Pixels[fX, hy] := RGB(R,G,B);
inc(cnt);
end;
end;
end;
function TForm1.LabLinea(Cap,Carc:string;Ali:TAlignment;Whi:Integer):string;
var VarIAnc,VariDif:Integer;
VarSCad:string;
lab:TLabel;
begin
lab:=TLabel.Create(Self);
lab.Parent:=Self;
VarIAnc:=lab.Canvas.TextWidth(Cap);
VariDif:=whi-VarIAnc;
VarSCad:=Cap;
case Ali of
taLeftJustify: begin
while lab.Canvas.TextWidth(VarSCad) < Whi do VarSCad:=VarSCad+Carc;
end;
taRightJustify:begin
while lab.Canvas.TextWidth(VarSCad) < Whi do VarSCad:=Carc+VarSCad;
end;
taCenter:begin
while lab.Canvas.TextWidth(VarSCad) < lab.Canvas.TextWidth(Cap)+(VariDif/2) do VarSCad:=VarSCad+Carc;
while lab.Canvas.TextWidth(VarSCad) < whi do VarSCad:=Carc+VarSCad
end;
end;
Result:=VarSCad
end;