让java颜色变暗不要?

时间:2016-05-26 00:43:41

标签: java swing colors

我知道Color有一个darker()方法,可以返回更深颜色的颜色。有没有办法改变颜色的因素(我相信它是0.7),从而使颜色更少/更暗(或相反,更少/更亮)?

来自Java API:

  

此方法将此颜色的三个RGB分量中的每一个应用任意比例因子,以创建此颜色的较暗版本。

换句话说,我可以更改这个任意比例因子吗?

1 个答案:

答案 0 :(得分:3)

javaAPI没有为此提供任何实用程序。无论如何,它非常简单,为什么不自己编码呢?

Color overrideBrightness(Color c , float factor){
    if(factor < 0)
        throw new IllegalArgumentException("Factor must be positive");

    float[] components = c.getComponents();

    return new Color(Math.min(components[0] * factor , 1.0) , 
                     Math.min(components[1] * factor , 1.0) ,
                     Math.min(components[2] * factor , 1.0) , 
                     components[3]);
}

对于factor > 1,颜色变得更亮,对于factor < 1,颜色变得更暗。除了一些舍入误差外,此方法应该是可逆的。

请注意,此方法不会处理极端情况,例如factor靠近Float.MAX_VALUE的溢出,并且不会为完美的黑色工作({{ 1}})。