Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Form con fondo grandiente (https://www.clubdelphi.com/foros/showthread.php?t=80838)

Khronos 26-08-2007 21:57:57

Form con fondo grandiente
 
Es un sencillo procedure para darle un efecto grandiente a los forms sin componentes.

Código Delphi [-]
procedure GradientForm (frm : TForm; startcolor, endcolor : TColor);
var
  startr : integer;
  startg : integer;
  startb : integer;
  endr   : integer;
  endg   : integer;
  endb   : integer;
  curr   : integer;
  curg   : integer;
  curb   : integer;
  i      : integer;
  r      : TRect;
  nolines: byte;
  curpct : integer;
  bitspix: longint; 
begin
  startr := startcolor and  $000000FF;
  startg := (startcolor and $0000FF00) div 256;
  startb := (startcolor and $00FF0000) div 256 div 256;
  endr := endcolor and  $000000FF;
  endg := (endcolor and $0000FF00) div 256;
  endb := (endcolor and $00FF0000) div 256 div 256;

  if frm.Height < 250 then
    nolines:=frm.Height
  else
    nolines:=250; 
  bitspix:=GetDeviceCaps(frm.Canvas.Handle, BITSPIXEL); 
  if (bitspix = 8) and (nolines > 50) then 
    nolines:=50
  else if bitspix < 8 then 
    nolines:=4; 

  r.Left:=0; 
  r.Right:=frm.Width; 

  for i:=0 to nolines do 
  begin

    curpct:= (i * 100) div nolines; 


    if startr > endr then
     curr := startr - (curpct * (startr-endr) div 100)
    else
     curr := startr + (curpct * (endr-startr) div 100);


    if startg > endg then
     curg := startg - (curpct * (startg-endg) div 100)
    else
     curg := startg + (curpct * (endg-startg) div 100);


    if startb > endb then
     curb := startb - (curpct * (startb-endb) div 100)
    else
     curb := startb + (curpct * (endb-startb) div 100);


    frm.Canvas.Brush.Color:=RGB(curr, curg, curb);


    r.Top:=i + (i*(frm.Height div nolines));
    r.Bottom:=r.Top + (frm.Height div nolines)+1;


    frm.Canvas.FillRect(r);
  end;
end;

Para llamarlo

Código Delphi [-]
procedure TForm1.FormPaint(Sender: TObject);
begin 
GradientForm(Form1,RGB(60,140,210), RGB(1,1,2));
end;

Salu2

Delphius 30-08-2007 06:07:44

Muy bueno.
Por cierto... ¿es de tu autoria o lo encontraste en algún sitio?
Si no es mucha molestia... ¿podrías indicar el link (si es que no de tu autoria y/o no posee derechos de autor)?
Estoy interesado en estos "aspectos estéticos".
Muchas gracias.

Khronos 30-08-2007 17:11:15

Este code lo encontre en una pagina y me parecio interesante y lo probe. La combinacion de colores es mia xD

Código Delphi [-]
GradientForm(Form1,RGB(60,140,210), RGB(1,1,2));

Modificando los valores consigues todos los colores que quieras. Si me acuerdo de la pagina te paso el link

Salu2

farnao 20-09-2007 08:57:10

Si también llamas al procedimiento en el evento OnResize el efecto es mejor. Si se llama sólo en el OnPaint el efecto se estropea cuando cambias lo suficiente el tamaño de la venta, o cuando la velocidad del cambio es grande.

jachguate 09-01-2008 18:47:29

No es muy dificil de "recordar". De hecho, encontré la página por lo que dejo la referencia para dar el crédito correspondiente al autor original

http://www.nikse.dk/delphi.html

roockie 24-01-2008 23:33:25

ME PARECE MUY INTERESANTE IRE A APLICARLO Y DIRE COMO ME FUE


La franja horaria es GMT +2. Ahora son las 11:33:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi