Java颜色不透明度

时间:2011-07-16 05:02:50

标签: java colors transparency opacity

我有一种方法可以根据某些值确定颜色。方法是这样的:

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);
}

我也想让颜色变得透明。我怎样才能做到这一点? 感谢

4 个答案:

答案 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;
}