2009-10-02 13 views
5

Sto provando a generare un colore che potrebbe evidenziare un elemento come "selezionato" in base al colore dell'oggetto corrente. Ho provato ad aumentare alcuni dei valori HSB, ma non riesco a trovare una formula generalizzata. In particolare, ho problemi con il bianco (un bianco più luminoso non sembra molto diverso da un bianco normale). Non c'è nessun requisito che dice che ho bisogno di renderlo più luminoso, quindi una sorta di colore "inverso" funzionerebbe bene anche. Ci sono algoritmi o tecniche standard per fare qualcosa del genere (sto indovinando sì, ma non sono riuscito a trovarne nessuno - non sono sicuro se c'è un nome per questo)?Algoritmo colorazione selezione

grazie,

Jeff

risposta

3

Forse l'effetto negatif:

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) 

o l'aggiunta di un colore blu-effetto:

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

Zero contrasto con (128, 128, 128) – recursive

3

Una tecnica yo Puoi usare è scambiare il colore in primo piano (testo) dell'articolo e il suo colore di sfondo. Se i colori del testo e dello sfondo del tuo articolo hanno già un piacevole contrasto, l'elemento selezionato dovrebbe continuare a sembrare bello.

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

Questa è la tecnica utilizzata in questo sito (Stack Overflow) quando il mouse-over i tag nel tuo post. Passano da DarkBlue-on-LightBlue a LightBlue-on-DarkBlue. Provalo per vedere l'effetto.

+0

Robert, questo funzionerebbe, tuttavia, il caso con cui sto lavorando non ha uno sfondo solido. È un oggetto tracciato su uno sfondo non solido. –

3

Se si utilizza HSB, provare a spostare la tonalità di metà del valore massimo su o giù, che dovrebbe fornire il colore "opposto" (chiamato anche colore complementare). Tuttavia, questo non ti fa bene allo spettro dei grigi, che non ha tonalità e sarà quindi identico.

Se si esegue questa operazione con tonalità e luminosità, si otterrà una sorta di "negativo", che funziona in tutti i casi. Un vero negativo dovrebbe "capovolgere" il valore di luminosità attorno al punto centrale, ma ciò non funziona per il grigio medio, che sarebbe comunque grigio medio.

Non è sempre possibile rendere un colore più luminoso (cosa fai con il bianco?), Quindi spostare la tonalità e la luminosità della metà è il più affidabile se stai cercando il contrasto.

Problemi correlati