Java: Operazioni con i colori (aggiungi, sottrai)? - Colori in una classe costante
Domanda
Sto lavorando con le istanze java.awt.Color
. Esiste un modo per eseguire operazioni aritmetiche sui colori? Qualcosa come rgb (20, 20, 20) + rgb (10, 200, 170) = rgb (30, 220, 190)
?
Cosa sto cercando di fare: ho una GUI che presenta una tabella, in cui se l'utente fa clic su una cella, le altre celle cambiano colore in base alla loro relazione con quella selezionata. Sto cercando un modo per evitare la codifica dei colori di base e su quali valori di colore cambiano.
Quindi la cella selezionata potrebbe essere rgb (255, 0, 0)
e tutto il resto potrebbe essere compreso tra rgb (0, 0, 0)
e rgb (0, 255, 0)
in base ai loro valori. Sto pensando ... enums?
import java.awt.Color;
public enum ColorConstant {
SELECTED (new rgb(255, 0, 0), "Red"),
MAX_DISTANCE (new rgb(0, 255, 0), "Green")
private Color shade;
private ??? whichColorToModify;
}
Soluzione
Esistono i metodi Color.brighter e Color.darker.
A parte questo, di solito scrivo un piccolo metodo di utilità per tali scopi, come:
private static Color brightness(Color c, double scale) {
int r = Math.min(255, (int) (c.getRed() * scale));
int g = Math.min(255, (int) (c.getGreen() * scale));
int b = Math.min(255, (int) (c.getBlue() * scale));
return new Color(r,g,b);
}
Altri suggerimenti
HSLColor potrebbe essere quello che stai cercando. Ti consente di regolare facilmente la tonalità / tonalità di un colore.