Meintest du das zum Beispiel so?
Delphi-Quellcode:
Uses Math;
Procedure HDAnpassen(HD: ShortInt);
{ HD: -100..0 = dunkler / 0..100 = heller }
Var Farbe: TColor;
R, G, B: Byte;
Begin
Farbe := ColorToRGB(Form1.Color);
R := (Farbe
and $000000FF);
G := (Farbe
and $0000FF00)
shr 8;
B := (Farbe
and $00FF0000)
shr 16;
If HD < 0
Then Begin
R := Trunc(R + (R * HD / 100));
G := Trunc(G + (G * HD / 100));
B := Trunc(B + (B * HD / 100));
{Form1.Memo1.Lines.Add('***** dunkler ***** ' + IntToStr(R));}
Form1.Memo1.Lines.Add('
***** dunkler ***** ' +
IntToStr(R) + '
:' + IntToStr(G) + '
:' + IntToStr(B));
End Else Begin
R := Ceil(R + ((255 - R) * HD / 100));
G := Ceil(G + ((255 - G) * HD / 100));
B := Ceil(B + ((255 - B) * HD / 100));
{Form1.Memo1.Lines.Add('***** heller ***** ' + IntToStr(R));}
Form1.Memo1.Lines.Add('
***** heller ***** ' +
IntToStr(R) + '
:' + IntToStr(G) + '
:' + IntToStr(B));
End;
Form1.Color :=
RGB(R, G, B);
End;
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
(* 10% heller *)
HDAnpassen(10);
End;
Procedure TForm1.Button2Click(Sender: TObject);
Begin
(* 10% dunkler *)
HDAnpassen(-10);
End;
http://www.FrankNStein.de/Smiley-Kuss.gif * *
http://www.FrankNStein.de/Smiley-Spinne.gif * * *
http://www.FrankNStein.de/Smiley-Winken.gif
Ein Therapeut entspricht 1024 Gigapeut.