Java: Opérations avec les couleurs (addition, soustraction)? - Couleurs dans une classe constante
Question
Je travaille avec des instances java.awt.Color
. Est-il possible de faire des opérations arithmétiques sur les couleurs? Quelque chose comme rgb (20, 20, 20) + rgb (10, 200, 170) = rgb (30, 220, 190)
?
Ce que j'essaie de faire: mon interface graphique comporte un tableau dans lequel, si l'utilisateur clique sur une cellule, les autres cellules changent de couleur en fonction de leur relation avec la cellule sélectionnée. Je cherche un moyen d’éviter de coder en dur les couleurs de base et les valeurs de couleur qu’elles changent.
La cellule sélectionnée peut donc être rgb (255, 0, 0)
et tout le reste peut être compris entre rgb (0, 0, 0)
et rgb (0, 255, 0)
en fonction de leurs valeurs. Je pense ... 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;
}
La solution
Il existe les méthodes Color.brighter et Color.darker.
En dehors de cela, j’écris habituellement un petit utilitaire à cette fin, par exemple:
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);
}
Autres conseils
HSLColor pourrait être ce que vous recherchez. Il vous permet d’ajuster facilement le ton et la nuance d’une couleur.