TColorDialog
Aufrufen von TColorDialog und übergeben der gewählten Farbe
z.B. hinter einem Click-Event auf
einen Button:
|
if ColorDialog1.Execute
then
begin
Edit1.Color
:= ColorDialog1.Color; //
setzt die gewählte Farbe als Hindergrundfarbe im Edit1
Edit1.Text :=
ColorToString(ColorDialog1.Color);
// gibt den gewählten Farbcode in Edit1
aus
end; |
Kontrastfarbe ermitteln
Möchte man eine eingefärbte Fläche
beschriften und weiß im Vorfeld nicht welche Farbe das Feld
haben wird, so kann es unter Umständen zum "Weißer Adler auf
weißem Grund" Effekt kommen. Die folgende Funktion bestimmt die
Farbe Weiß oder Schwarz, je nachdem welche Farbe den höchsten
Kontrast zur Hintergrundfarbe bietet.
|
function
BlackWhiteContrastColor(value: TColor):TColor;
var
intensity : Integer;
begin
value := ColorToRGB(value);
intensity := GetBValue(value) * 21
// Blue
+ GetGValue(value) * 174
// Green
+ GetRValue(value) * 61;
// Red
// intensity = 0 -> dark
// intensity = 255*256 -> bright
if intensity >= (128*256)
then
Result := clBlack
else
Result := clWhite;
end; |
TColor <---> RGB
|
var
R,G,B:
String;
...
if ColorDialog1.Execute
then
begin
Edit1.Color := ColorDialog1.Color; //
setzt die gewählte Farbe als Hindergrundfarbe im Edit1
R :=
IntToStr(GetRValue(ColorDialog1.Color));
G :=
IntToStr(GetGValue(ColorDialog1.Color));
B :=
IntToStr(GetBValue(ColorDialog1.Color));
Edit1.Text :=
R+','+G+','+B
end; |
Von RGB nach TColor wandeln
Da Boarland diese Mickey Maus
Funktion vergessen hat, hier eine fertige Lösung
|
function
RGBToColor(R,G,B:Byte): TColor;
begin
Result:=B Shl
16 or
G Shl
8 or
R;
end; |
Beispiel:
|
Edit1.Color := RGBToColor(255,0,0) ;
// das Editfeld wird rot eingefärbt
|
|