Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Crear un Degradado entre dos colores (https://www.clubdelphi.com/foros/showthread.php?t=61986)

aeff 29-11-2008 11:53:12

Crear un Degradado entre dos colores
 
Saludos, colegas la cuestion que trato de resolver es lograr un degradado entre dos colores, para explicarme mejor, tengo dos colores, por ejemplo: clRed y clBlue, y necesito degradar el rojo hasta llegar a azul verticalmente, claro, pintando en el canvas de un objeto y teniendo en cuenta el Height del mismo de forma que la degradación se ajuste al área ¿no?.

En el Trucomania existe una referencia de como lograr un degradado tipo instalación, en este caso no me preocupa el Height de el objeto en cuestion (el Form), pero el degradado es de un color específico hacia negro y lo que quiero es lograrlo entre dos colores:

Cita:

Código:

procedure TForm1.FormPaint(Sender: TObject);
  var
    Row, Ht: Word ;
  begin
    Ht := (ClientHeight + 255) div 256 ;
    for Row := 0 to 255 do
      with Canvas do begin
          Brush.Color := RGB(0, 0, Row) ;
          FillRect(Rect(0, Row * Ht, ClientWidth, (Row + 1) * Ht)) ;
      end ;
  end;


alguien me puede dar una mano en esto colegas :( ???

mil gracias de antemano, en verdad!, mil gracias!

saludos!
aeff!

coso 29-11-2008 12:15:52

Hola, se ha dado el tema muchas veces. Te recomiendo que uses el buscador antes de preguntar algo en el foro. Saludos.

aeff 29-11-2008 12:30:47

ok colega, pido disculpa por incumplir con la guia del foro, eso haré!!

cHackAll 29-11-2008 18:11:46

Cita:

Empezado por coso (Mensaje 328731)
Hola, se ha dado el tema muchas veces...

Demasiada coincidencia :rolleyes:

Cita:

Empezado por JF Sebastian (Mensaje 327509)
Desearia realizar un espectro de colores desde el rojo al azul...

Cita:

Empezado por aeff (Mensaje 328730)
...necesito degradar el rojo hasta llegar a azul...

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var Offset, Value, Index: Cardinal;
begin
 Offset := 0;
 Value := 255;
 for Index := 0 to 255 do
  begin
   Canvas.Pen.Color := Value;
   Canvas.MoveTo(0, Index);
   Canvas.LineTo(32, Index + 16);
   Dec(PByte(Cardinal(@Value) + (Offset mod 3))^);
   Inc(PByte(Cardinal(@Value) + ((Offset + 2) mod 3))^);
   if ((Index + 1) mod 255) = 0 then
    Inc(Offset);
  end;
end;

Saludos


La franja horaria es GMT +2. Ahora son las 16:43:09.

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