4

我正在处理java.awt.Color实例。有没有办法对颜色进行算术运算?像rgb(20, 20, 20) + rgb(10, 200, 170) = rgb(30, 220, 190)什么?

我正在尝试做的事情:我有一个带有表格的 gui,如果用户单击一个单元格,其他单元格会根据它们与所选单元格的关系改变颜色。我正在寻找一种方法来避免硬编码基本颜色是什么,以及它们改变哪些颜色值。

因此,选定的单元格可能是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;

}
4

2 回答 2

7

有 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);
}
于 2009-10-24T14:51:22.243 回答
2

HSLColor可能是您正在寻找的。它使您可以轻松调整颜色的色调/阴影。

于 2009-10-24T15:15:33.130 回答