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;

}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top