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.