Java Swing. Come cambiare l'intensità del colore dal nero al bianco?
Domanda
Non vedo il colore come il cambiamento solo dal nero al bianco. Scala di grigi.
Il mio esempio. Ho valori che va da 0 a 100.
La loro rappresentazione è in questo modo:
0 - Nero
100 - Bianco
sto dipingendo JComponent e ogni volta che devo cambiare colore devo chiamare
g.setColor(Color);
Ma come dire che per cambiare il colore solo dal nero al bianco, a seconda del mio numero (maggiore è il numero, il colore è più bianco)? Come manipolare oltre RGB?
Soluzione
Non v'è, naturalmente, nessun cambiamento di colore dal nero al bianco, di per sé, se non attraverso le tonalità più chiare a poco a poco di grigio.
Quindi, basta usare valori uguali di RGB, il trattamento di 0 -. 100 come percentuale del 255
Per esempio, il 50% è RGB di 128.128.128 (anche se a seconda di arrotondamento si potrebbe arrivare a 127.127.127).
L'espressione per passare da un valore percentuale ad un 0-255 è:
rgb=(pct*255)/100;
Altri suggerimenti
L'API di colore ha valori HSB che si possono trovare più facile da utilizzare.
È inoltre possibile utilizzare le HSL Colori . Controlla la scheda "luminanza" quando si avvia con un colore nero o bianco.
Fino a quando i valori sono uguali in RGB si dispone di un grigio.
così
g.setColor(new Color(0, 0, 0);
è bianco.
g.setColor(new Color(255,255,255);
è nero
g.setColor(new Color(128,128,128);
è una miscela uguale di bianco e nero.