Java: операции с цветами (сложение, вычитание)? - цвета в постоянном классе
Вопрос
Я работаю с экземплярами 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 может быть тем, что вы ищете. Это позволяет легко регулировать тон / оттенок цвета.