weiß jemand, wie man zu einer Farbe (Long-Wert, bzw. RGB-Wert bekannt) die
Komplementärfarbe ermittelt?
Vielen Dank, Gruß Peter
Mit Not RGBValue.
Olaf
> weiß jemand, wie man zu einer Farbe (Long-Wert, bzw.
> RGB-Wert bekannt) die Komplementärfarbe ermittelt?
Grundsätzlicher Zusammenhang:
Farbe = RGB(R, G, B)
Komplement = RGB(255 - R, 255 - G, 255 - B)
Oder berechnet aus dem Long-Wert:
Komplement = Farbe Xor &HFFFFFF
Viele Grüße
Jost aus Soest (sprich: Joost aus Soost)
--
Visual Basic, Web-Technik, ... - http://www.schwider.de/
Sent via Deja.com
http://www.deja.com/
zunächst mal vielen Dank. Allerdings komme ich damit nicht ganz klar.
Eine Funktion RGBValue finde ich in VB nicht.
Falls das Ergebnis der Funktion RGB(rot,grün,blau) gemeint sein sollte, so
liefert Not RGB(,,) eine negative Zahl, die sich nicht als Eigenschaftswert
verwenden läßt.
Falls das Ergebnis der Funktion RGB(Not rot, Not grün, Not Blau) gemeint
sein sollte, so liefert die RGB-Funktion hierfür einen Fehler, weil Not rot
etc. negative Zahlen sind und die RGB-Funktion diese nicht verträgt.
Der Hintergrund ist folgender. Egal, welche Farbe als BackColor eines
Controls eingestellt ist, soll mit der Komplemetärfarbe die
ForeColor-Eigenschaft so eingestellt werden, daß Text optimal lesbar ist.
Ich hoffe, daß dafür die Komplemetärfarbe am besten geeignet ist. Aus der
Schule glaube ich noch zu wissen, daß die Komplementärfarbe zu rot grün ist,
zu blau orange und zu violett gelb.
Für alle anderen Farben möchte ich sie aber mit der gesuchten Funktion
ermitteln.
Ich habe auch schon versucht, die Farbe RGB(255-rot, 255-grün,255-blau) zu
verwenden. Dies scheint aber nicht die Komplemetärfarbe zu liefern. Für Rot
liefert sie beispielsweise nicht grün zurück, sondern RGB(0,255,255).
Könntest du mir dabei noch etwas mehr auf die Sprünge helfen?
Vielen dank, Grüße Peter
Schmidt <s...@online.de> schrieb in im Newsbeitrag:
3a40...@news.basicworld.com...
Da wird Dir das RGB-Modell warscheinlich nciht direkt weiterhelfen. Mit dem
HSL (Farbe/Sättigung/Helligkeit, jeweils 8 Bit) dürfte sich die
Komplementärfarbe aber recht einfach bestimmen lassen: Farbe+128,
Helligkeit+128, Überlauf abschneiden. Jetzt fehlt nur noch eine Funktion, um
die beiden Farbmodelle miteinander auszutauschen. Vielleicht hat Basic ja da
schon was für, keine Ahnung.
Frank/Hoogo
Visual Basic selbst nicht; solche Funktionen findest Du aber unter
uggc://jjj.nobhgio.qr/xuj/negvxry/xujetouyfufi.ugz
(Mit Rot13 verschlüsselt, weil man es anscheinend im Klartext hier nicht
posten kann)
Grüße
Thomas
Tja, da scheinst du dich zu irren.
Die Komplentär-Farbe ist die Farbe mit der man addieren muss um Weiß zu erhalten.
ES gibt die 3 Grundfarben ROT GRÜN BLAU aus der sich alle anderen Farben zusammensetzen
Alle 3 Grundfarben zusammen ergeben WEIß.
Kompl. von BLAU = GELB (ROT+GRÜN)
um das Komplement von einer Farbe zu erhalten muss man einfach diese Farbe von WEIß abziehen.
Kompl = &HFFFFFF& - Farbe
ich hoffe das hilft dir weiter,
Andy
Sorry, war da etwas nachlässig (Hab das maskieren vergessen).
Hier nochmal ein Beispiel:
Private Declare Function GetSysColor& Lib "user32" (ByVal Idx&)
Private Sub Form_Click()
BackColor = vbYellow
ForeColor = InvertColor(BackColor)
Print "SomeText"
End Sub
Private Function InvertColor&(ByVal Color&)
If Color < 0 Then Color = GetSysColor(Color And &HFFFF&)
InvertColor = (Not Color) And &HFFFFFF
End Function
Olaf
Ho Ho Ho!
> Ich hoffe, daß dafür die Komplemetärfarbe am besten geeignet ist. Aus der
> Schule glaube ich noch zu wissen, daß die Komplementärfarbe zu rot grün ist,
> zu blau orange und zu violett gelb.
Fast richtig, die Komplementärfarbe zu einer Grundfarbe sind die
1:1 Mischungen aus den beiden übrigen Grundfarben.
Beim Rechner (lichtbasiert) sind die drei Farben natürlich RGB.
Auf dem Papier (hab den Begrif vergessen) sind die drei Grundfarben
Rot/Blau/GELB.
Daraus folgt für Komplementärfarben auf dem Rechner:
RGB(255,0,0) <=> RGB(0,255,255)
RGB(0,255,0) <=> RGB(255,0,255)
RGB(0,0,255) <=> RGB(255,255,0)
> Ich habe auch schon versucht, die Farbe RGB(255-rot, 255-grün,255-blau) zu
> verwenden. Dies scheint aber nicht die Komplemetärfarbe zu liefern. Für Rot
> liefert sie beispielsweise nicht grün zurück, sondern RGB(0,255,255).
Also ist Dieser Ansatz schon richtig, allerdings bildet er
halt nicht den Farbkreis ab, den man in der Schule lernt.
Ist die Frage, ob das reicht oder nicht.
Wie man jetzt allerdings die Farben in diesen
RYB(Red,Yellow,Blue)-Kreis umsetzen soll,
weiss ich so spontan auch nicht.
Gruß
Daniel
Tja, da scheinst du dich zu irren.