Непрозрачность цвета Java - PullRequest
3 голосов
/ 16 июля 2011

У меня есть метод определения цвета на основе некоторого значения.Метод таков:

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 ]

6 голосов
/ 16 июля 2011

Самый простой способ - указать R, G, B и A напрямую, используя этот конструктор:

public Color(float r, float g, float b, float a).

Я знаю, что у вас есть HSB, но вы можете конвертировать в RGB достаточно легко.

4 голосов
/ 16 июля 2011

Используйте конструктор Color , который принимает значение с альфа-каналом. В частности, сначала вы конвертируете свои цветовые координаты в пространство RGB:

int rgba = Color.HSBtoRGB(H, S, B)

и затем добавьте желаемое количество прозрачности,

rgba |= (alpha & 0xff)

Это значение вы можете передать конструктору. Обязательно используйте true в качестве второго аргумента.

2 голосов
/ 02 июня 2016

Я знаю, что это старый, но все, что я делаю, когда хочу, чтобы прозрачность была сделана с помощью встроенного графического объекта Java, это new Color(RRR, GGG, BBB, AAA).

Используется в контексте:

g.setColor(new Color(255, 255, 255, 80));

Последнее значение - альфа-канал / непрозрачность, большее число означает менее непрозрачным.

1 голос
/ 16 июля 2011
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;
}
...