2009-10-02 6 views
5

Ich versuche, eine Farbe zu generieren, die ein Element als "ausgewählt" basierend auf der Farbe des aktuellen Objekts markieren konnte. Ich habe versucht, einige der HSB-Werte zu erhöhen, aber ich kann nicht auf eine verallgemeinerte Formel kommen. Insbesondere habe ich Probleme bei der Arbeit mit Weiß (ein helleres Weiß sieht nicht viel anders aus als ein normales Weiß). Es gibt keine Anforderung, die sagt, dass ich es heller machen muss, also würde eine Art "inverse" Farbe auch gut funktionieren. Gibt es irgendwelche Standardalgorithmen oder -techniken, um so etwas zu tun (ich vermute ja, aber ich konnte keine finden - ich weiß nicht, ob es einen Namen dafür gibt)?Auswahl Farbalgorithmus

Dank,

Jeff

Antwort

3

Vielleicht ist die negatif Wirkung:

pseudo:

int red = originalColor.red 
int green = originalColor.green 
int blue = originalColor.blue 

int newRed = 255 - red 
int newGreen = 255 - green 
int newBlue = 255 - blue 

Color negativeColor = new Color(newRed, newGreen, newBlue) 

Oder eine blaue Farbe-Effekt hinzu:

int red = originalColor.red 
int green = originalColor.green 
int blue = originalColor.blue 

int newRed = 255 - red 
int newGreen = 255 - green 
int newBlue = 255 - blue + 100 
if newBlue > 255 { 
    newBlue = 255 
    newRed = newRed - 50 
    newGreen = newGreen - 50 
    if newRed < 0 {newRed = 0} 
    if newGreen < 0 {newGreen = 0} 
} 

Color negativeColor = new Color(newRed, newGreen, newBlue) 
+2

Nullkontrast mit (128, 128, 128) – recursive

3

Eine Technik yo Sie können verwenden, um die Vorder- (Text-) Farbe und die Hintergrundfarbe des Objekts zu ändern. Wenn die Text- und Hintergrundfarben Ihres Artikels bereits einen angenehmen Kontrast haben, sollte der ausgewählte Artikel weiterhin gut aussehen.

alt text http://rcartaino.wordpress.com/files/2009/10/selected-tag.png

, dass die Technik auf dieser Seite (Stack-Überlauf), wenn Sie mit der Maus über die Tags in Ihrem Beitrag verwendet wird. Sie wechseln von DarkBlue-on-LightBlue zu LightBlue-on-DarkBlue. Probieren Sie es aus, um den Effekt zu sehen.

+0

Robert, das würde funktionieren, aber der Fall, mit dem ich arbeite, hat keinen festen Hintergrund. Es ist ein Objekt, das auf einem nicht-durchgehenden Hintergrund gezeichnet wird. –

3

Wenn Sie HSB verwenden, versuchen Sie, den Farbton um den halben Maximalwert nach oben oder unten zu verschieben, damit Sie die "entgegengesetzte" Farbe (auch Komplementärfarbe genannt) erhalten. Für das Grauspektrum, das keinen Farbton hat und daher identisch aussieht, bringt das nichts.

Wenn Sie dies sowohl mit Farbton als auch Helligkeit tun, erhalten Sie eine Art "negativ", die in allen Fällen funktioniert. Ein echtes Negativ würde den Helligkeitswert um den Mittelpunkt herum "spiegeln", aber das funktioniert nicht für Mittelgrau, das immer noch mittelgrau wäre.

Es ist nicht immer möglich, eine Farbe heller zu machen (was machst du mit Weiß?), Also ist die Verschiebung von sowohl Farbton als auch Helligkeit um die Hälfte die zuverlässigste, wenn du nach Kontrast suchst.