Mit ColorToRGB sollten natürlich vorher die Farbwerte der Farbpalette in
RGB umgewandelt werden
clBtnFace ist zum beispiel kein
RGB Wert, sondern verweißt auf einen Farbwert in der Systempalette.
Delphi-Quellcode:
Unit Unit1;
Interface
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Type TForm1 =
Class(TForm)
Button1: TButton;
Button2: TButton;
Procedure Button1Click(Sender: TObject);
Procedure Button2Click(Sender: TObject);
End;
Var Form1: TForm1;
Implementation
{$R *.dfm}
Procedure TForm1.Button1Click(Sender: TObject);
Var R, G, B: Byte;
Farbe: TColor;
HD: ShortInt;
{ -100..0 = dunkler / 0..100 = heller }
Begin
HD := -10;
Farbe := ColorToRGB(Color);
R := (Farbe
and $000000FF);
G := (Farbe
and $0000FF00)
shr 8;
B := (Farbe
and $00FF0000)
shr 16;
R := R + (R * HD
div 100);
G := G + (G * HD
div 100);
B := B + (B * HD
div 100);
Color :=
RGB(R, G, B);
End;
Procedure TForm1.Button2Click(Sender: TObject);
Var R, G, B: Byte;
Farbe: TColor;
HD: ShortInt;
{ -100..0 = dunkler / 0..100 = heller }
Begin
HD := 10;
Farbe := ColorToRGB(Color);
R := (Farbe
and $000000FF);
G := (Farbe
and $0000FF00)
shr 8;
B := (Farbe
and $00FF0000)
shr 16;
R := R + ((255 - R) * HD
div 100);
G := G + ((255 - G) * HD
div 100);
B := B + ((255 - B) * HD
div 100);
Color :=
RGB(R, G, B);
End;
End.
HD gibt die starke der Änderung an.
http://www.FrankNStein.de/Smiley-Kuss.gif * *
http://www.FrankNStein.de/Smiley-Spinne.gif * * *
http://www.FrankNStein.de/Smiley-Winken.gif