我有一种方法可以根据某些值确定颜色。方法是这样的:
public Color color(double val) {
double H = val * 0.3;
double S = 0.9;
double B = 0.9;
return Color.getHSBColor((float)H, (float)S, (float)B);
}
我也想让颜色变得透明。我怎样才能做到这一点? 感谢
答案 0 :(得分:6)
最简单的方法是使用以下构造函数直接指定R,G,B和A:
public Color(float r, float g, float b, float a)
我知道你有HSB,但你可以轻松地convert to RGB。
答案 1 :(得分:4)
使用带有Alpha通道值的Color
constructor。具体来说,首先将颜色坐标转换为RGB空间:
int rgba = Color.HSBtoRGB(H, S, B)
然后添加所需的透明度,
rgba |= (alpha & 0xff)
您可以将此值传递给构造函数。确保使用true
作为第二个参数。
答案 2 :(得分:2)
我知道这是旧的,但当我想要使用Java内置图形对象进行不透明时,我所做的就是new Color(RRR, GGG, BBB, AAA)
。
在上下文中使用:
g.setColor(new Color(255, 255, 255, 80));
最后一个值是alpha通道/不透明度,数字越大表示不透明度越低。
答案 3 :(得分:1)
public Color color(double val) {
double H = val * 0.3;
double S = 0.9;
double B = 0.9;
int rgb = Color.HSBtoRGB((float)H, (float)S, (float)B);
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = rgb & 0xFF;
Color color = new Color(red, green, blue, 0x33);
return color;
}