09/03/2006

Mudar tonalidade de cor em rumtime

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


Ricardo Oliveira

Respostas

09/03/2006

Edilcimar

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


Responder Citar

09/03/2006

Ricardo Oliveira

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;


Responder Citar

09/03/2006

Edilcimar

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


Responder Citar

09/03/2006

Ricardo Oliveira

nao deu nao !!!


Responder Citar

09/03/2006

Marcelo.l

Olá, Ricardo

Tente as funções abaixo:


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:
MeuComponente.Color := ClareiaCor(Form.Color, 30); 


Espero ter ajudado


Responder Citar

09/03/2006

Marcelo.l

Sorry...

Faltaram duas funções...
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;



Responder Citar

13/03/2006

Ricardo Oliveira

blz, era isso mesmo !!!

Valeu,


Responder Citar