Java: Opérations avec les couleurs (addition, soustraction)? - Couleurs dans une classe constante

StackOverflow https://stackoverflow.com/questions/1618169

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;

}
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top