Un buon modo di generare un bel set di colori è definire utilizzando saturazione fisso e la luminosità e variare la tonalità.
- Imposta la saturazione e la luminosità su qualcosa che ti piace, ad esempio il 50% di saturazione e il 90% di luminosità.
- Ora dividere i 360 gradi di tonalità in base al numero di colori distinti desiderati.
- colori scegliere da HSV che utilizzano tale intervallo per la tonalità e la fissa S e V.
Questo vi dà un bel set di colori, che tutti sembrano sono venuti dalla stessa 'set' - tutto pastello, o tutto intenso, o tutto bianco sporco, qualunque cosa. Ed è piuttosto semplice codificarlo se hai Color.FromHSV().
Probabilmente smette di funzionare quando si ottengono troppi colori, ma saranno indistinguibili. Ma probabilmente avrai comunque il problema.
In pseudo-codice:
Sat = 0.5 * 255 //assuming we want range 0-255...
Brightness = 0.9 * 255
NumberOfColours = 7
HueSeparation = 360/7
Colors = []
for (i = 0 ; i< NumberOfColours; i++)
Colors.Add(Color.FromHSV(HueSeparation * i, Sat, Brightness)
o
n = 7
Colors = [Color.FromHSV(x*360/n, 128, 230) for x in range(n)]
(mi piace list comprehension ...)
Ho appena notato che il mio esempio non è venuto attraverso. Sto indovinando questo perché era una stringa xml ... Oh beh, non importava dal momento che la risposta ha funzionato alla grande. – rahkim
@rahkim - domanda aggiornata per risolvere il problema e aggiunto un titolo più significativo –