Frage

Ich arbeite mit java.awt.Color Instanzen. Gibt es eine Möglichkeit arithmetische Operationen mit Farben zu tun? So etwas wie rgb(20, 20, 20) + rgb(10, 200, 170) = rgb(30, 220, 190)?

Was ich versuche zu tun: Ich habe eine GUI, die eine Tabelle verfügt, in dem, wenn der Benutzer auf eine Zelle klickt, die anderen Zellen Farbe ändern, basierend auf ihrer Beziehung zu dem ausgewählten. Ich bin für einen Weg, um zu vermeiden, harte Kodierung, was die Grundfarben sind, und auf welche Farbwerte sie sich ändern.

So die ausgewählte Zelle könnte rgb(255, 0, 0), und alles andere könnte sein, zwischen rgb(0, 0, 0) und rgb(0, 255, 0) auf der Grundlage ihrer Werte. Ich denke ... Aufzählungen?

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;

}
War es hilfreich?

Lösung

Es gibt die Methoden Color.brighter und Color.darker.

Other than that, ich schreibe in der Regel eine kleine Utility-Methoden für solche Zwecke, wie:

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

Andere Tipps

HSLColor sein könnte, was Sie suchen. Es ermöglicht es Ihnen, den Ton / Schatten einer Farbe leicht anzupassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top