Array
(
)

Mudar tonalidade de cor em rumtime

Ricardo Oliveira
   - 09 mar 2006

bom dia,

Como faço para capturar uma cor e diminuir ou aumentar sua tonalidade em tempo de execução ?

Exemplo:
Criei um componente que tem o fundo da mesma cor do form (quando muda a cor do form tb muda a cor do componente).
porem este componente tem a borda superior da mesma cor com tonalidade menor, e a borda inferior com tonalidde maior.

desde ja agradeço


Edilcimar
   - 09 mar 2006

em vez de usar por ex: edit.color := clYellow use com hexa Edit1.Color := $00DFFFFF assim fica fácil de trocar o tom da cor


Ricardo Oliveira
   - 09 mar 2006

o problema é que nao sou eu exatamente que dou as cores, o componente captura automaticamente quando criado.

exp: (mais ou menos isso)

MeuComponente.Color := Form.Color;


Edilcimar
   - 09 mar 2006

tente para ver se aceita
MeuComponente.Color := Form.Color + inttohex(100);
se aceitar então dá para vc mudar


Ricardo Oliveira
   - 09 mar 2006

nao deu nao !!!


Marcelo.l
   - 09 mar 2006

Olá, Ricardo

Tente as funções abaixo:


#Código

function ClareiaCor(BaseColor: TColor; Adjust: Integer): TColor;
begin
Result := RGB(Min(GetRValue(ColorToRGB(BaseColor)) + Adjust, 255),
Min(GetGValue(ColorToRGB(BaseColor)) + Adjust, 255),
Min(GetBValue(ColorToRGB(BaseColor)) + Adjust, 255));
end;

function EscureceCor(BaseColor: TColor; Adjust: Integer): TColor;
begin
Result := RGB(Max(GetRValue(ColorToRGB(BaseColor)) - Adjust, 0),
Max(GetGValue(ColorToRGB(BaseColor)) - Adjust, 0),
Max(GetBValue(ColorToRGB(BaseColor)) - Adjust, 0));
end;


Por exemplo:
#Código
MeuComponente.Color := ClareiaCor(Form.Color, 30);


Espero ter ajudado


Marcelo.l
   - 09 mar 2006

Sorry...

Faltaram duas funções...
#Código


function Min(X, Y: Integer): Integer;
begin
if X < Y then
Result := X
else
Result := Y;
end;

function Max(X, Y: Integer): Integer;
begin
if X > Y then
Result := X
else
Result := Y;
end;



Ricardo Oliveira
   - 13 mar 2006

blz, era isso mesmo !!!

Valeu,