Vampire Geschrieben 23. August 2002 Geschrieben 23. August 2002 Hallo, ich gebe einem Objekt als Hintergrundfarbe einen long wert. da das ganze eher zufällig abläuft, weiß ich nicht welche fordergrundfarbe ich brauche, damit man noch was lesen kann. Und nun die Frage: Kann man irgendwie die Invertierte Farbe ermitteln??? Also z.B. aus Schwarz wird weiß, aus rot wird mint, aus gelb blau und jeweils umgekehrt. Zitieren
beetFreeQ Geschrieben 23. August 2002 Geschrieben 23. August 2002 Ich weiß zwar nicht, welche Sprache du meinst, aber idR. ist es doch so, daß du drei Zahlen für die Farbe hast: eie für Rot, eine für Grün und eine für Blau. Das sind idR. je 8 bit - als0 von 0 bis 255! Diese Werte mußt da dann nur umkehren... Bsp: Du hast folgende Farbe: R 255 G 120 B 0 da errechnest du also jeweils die Differenz zu 255 und schon haste die negative Farbe: R 0 G 135 B255 Du mußt nur bei Grauwerten aufpassen - da kann die negative Farbe mit Pech dieselbe sein, wie die Farbe selbst... Zitieren
Olli_Master Geschrieben 23. August 2002 Geschrieben 23. August 2002 Eine Möglichkeit wäre zur Zahl einfach 0x00808080 (hex) oder 8421504 (dezimal) zu addieren. Somit bekommst du zwar nicht die Komplementärfarbe, aber zumeindest sollte in den meisten Fällen lesbar sein. (grau auf weiß bzw. schwarz, usw.) Eine andere Möglichkeit wäre, dass du dich auf weiß oder schwarz als Vorderrgrundfarbe festlegst. Dann ermittelst du den Durchschnitt der Farbanteile. Wenn dieser größer 128 ist, dann nimmst du schwarz und sonst weiß. Pseudocode: iHelligkeit = (GetRValue(cColor) +GetGValue(cColor) +GetBValue(cColor)) / 3; if ( iHelligkeit >= 128) cColorNeu = 0; else cColorNeu = 0xFFFFFF; Ich hoffe das hilft... Zitieren
Vampire Geschrieben 23. August 2002 Autor Geschrieben 23. August 2002 Die Sprache ist VB, mir gings aber erst mal nur ums wie überhaupt. Die beiden Vorschläge sind gut, muss ma testen. Danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.