Pregunta

Estoy trabajando con instancias de java.awt.Color . ¿Hay alguna manera de hacer operaciones aritméticas en colores? Algo como rgb (20, 20, 20) + rgb (10, 200, 170) = rgb (30, 220, 190) ?

Lo que estoy tratando de hacer: tengo una interfaz gráfica de usuario que presenta una tabla, donde si el usuario hace clic en una celda, las otras celdas cambian de color según su relación con la seleccionada. Estoy buscando una manera de evitar la codificación difícil de cuáles son los colores base y en qué valores de color cambian.

Por lo tanto, la celda seleccionada puede ser rgb (255, 0, 0) , y todo lo demás puede estar entre rgb (0, 0, 0) y rgb (0, 255, 0) basado en sus valores. Estoy 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;

}
¿Fue útil?

Solución

Existen los métodos Color.brighter y Color.darker.

Aparte de eso, normalmente escribo pequeños métodos de utilidad para tales propósitos, como:

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);
}

Otros consejos

HSLColor puede ser lo que está buscando. Te permite ajustar el tono / tono de un color fácilmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top