Ver Mensaje Individual
  #2  
Antiguo 15-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
Hola, puedes buscar el negativo del color :

Código Delphi [-]
color_neg := $FFFFFF xor color;

o bien comparar luminosidades, y poner ciertos colores fijos (blanco, gris, negro, etc...) segun esta. Para calcularla tansolo tendras que sumar las componentes r,g,b de cada uno :

Código Delphi [-]
function Red(c : TColor) : integer;
begin
        Red := c and $FF;
end;

function Green(c : TColor) : integer;
begin
        Green := (c and $FF00) div $100;
end;

function Blue(c : TColor) : integer;
begin
        Blue := (c and $FF0000) div $10000;
end;

function Lum(c : TColor) : integer;
begin
        Lum := (Red(c) + Green(c) + Blue(c)) div 3;
end;

var
  l : integer;
begin
    l := Lum(backcolor);
    if l < 64  then font.color := clWhite  else
    if l < 128 then font.color := clSilver else
    if l < 192 then font.color := clGray   else font.color := clBlack;
end;

saludos.

Última edición por coso fecha: 15-11-2008 a las 16:29:25.
Responder Con Cita