Java: операции с цветами (сложение, вычитание)? - цвета в постоянном классе - PullRequest
2 голосов
/ 24 октября 2009

Я работаю с java.awt.Color экземплярами. Есть ли способ сделать арифметические операции над цветами? Что-то вроде rgb(20, 20, 20) + rgb(10, 200, 170) = rgb(30, 220, 190)?

Что я пытаюсь сделать: у меня есть графический интерфейс с таблицей, где, если пользователь нажимает на ячейку, другие ячейки меняют цвет в зависимости от их отношения к выбранной. Я ищу способ избежать жесткого кодирования того, что представляют собой базовые цвета и на какие значения цвета они меняются.

Таким образом, выбранная ячейка может быть rgb(255, 0, 0), а все остальное может быть между rgb(0, 0, 0) и rgb(0, 255, 0) в зависимости от их значений. Я думаю ... перечисления?

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;

}

Ответы [ 2 ]

6 голосов
/ 24 октября 2009

Есть методы Color.brighter и Color.darker.

Кроме этого, я обычно пишу небольшие служебные методы для таких целей, как:

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);
}
2 голосов
/ 24 октября 2009

HSLColor может быть то, что вы ищете. Позволяет легко регулировать тон / оттенок цвета.

...