23. August 200223 j 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.
23. August 200223 j 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...
23. August 200223 j 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...
23. August 200223 j Die Sprache ist VB, mir gings aber erst mal nur ums wie überhaupt. Die beiden Vorschläge sind gut, muss ma testen. Danke
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.