Java: операции с цветами (сложение, вычитание)? - цвета в постоянном классе

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

Вопрос

Я работаю с экземплярами 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;

}
Это было полезно?

Решение

Есть методы 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);
}

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top