我正在使用 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;

}
有帮助吗?

解决方案

有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