我知道Color有一个darker()
方法,可以返回更深颜色的颜色。有没有办法改变颜色的因素(我相信它是0.7),从而使颜色更少/更暗(或相反,更少/更亮)?
来自Java API:
此方法将此颜色的三个RGB分量中的每一个应用任意比例因子,以创建此颜色的较暗版本。
换句话说,我可以更改这个任意比例因子吗?
答案 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}})。