[C++] Komplementärfarbe ermitteln

Hi,

ich habe zwei Variablen vom Typ TColor. Jetzt moechte ich
im Falle der Farbgleichheit, der zweiten die Komplentärfarbe
der ersten zuweisen.

Etwa so (pseudo!):

TColor f1 = clWhite;
TColor f2 = clWhite;

if (f1 == f2)
{
 f2 = not(f1)
}

Ist das moeglich?

Ich weiss, dass ich mit „TCanvas-&gt:stuck_out_tongue_winking_eye:en->Mode = pmNot“ zum
Zeichnen mit der Komplementärfarbe auffordern kann, aber ich
braeuchte das wie oben beschrieben. Habe in der Hilfe nichts
passendes gefunden.

Technische Daten

  • Borland C++ Builder 6
  • WinXP Home SP 2

Danke und Gruss
Patrick

Hallo,

ich habe zwei Variablen vom Typ TColor. Jetzt moechte ich
im Falle der Farbgleichheit, der zweiten die Komplentärfarbe
der ersten zuweisen.

Verrätst du uns auch noch, aus welcher Klassenbibliothek die kommen?
Wenn du Zugriff auf die r,g,b-Werte hast, kannst du das Komplement einfach als 255-r, 255-g, 255-b bilden,
(Bzw. wenn sie als Float von 0 bis 1 gespeichert sind als 1.0-r, …)

Grüße,
Moritz

Hallo,
Verrätst du uns auch noch, aus welcher Klassenbibliothek die
kommen?

VCL muesste das sein.

_Unit
Graphics

enum TColor {clMin=-0x7fffffff-1, clMax=0x7fffffff};_

Ich habe nochmal ein bisschen rumgesucht (kaum macht man es
richtig) und das gefunden:

 TColor color = clWhite;
 int rgb = ColorToRGB(color);
 int r = GetRValue(rgb);
 int g = GetGValue(rgb);
 int b = GetBValue(rgb);

Man kann die Werte auch direkt rausshiften (z.B. color >> 8),
das habe ich aber nicht so richtig hinbekommen. Die Hilfsfunktionen
tun ihren Dienst.

Danke und Gruss
Patrick