如何更改预定义十六进制颜色的alpha?

时间:2013-10-04 23:07:14

标签: java colors hex transparency

如果给出十六进制颜色代码,我想知道一个人如何改变颜色的alpha透明度。例如,如果给定     Color.red.getRGB() 我怎么能把它的alpha改为0x80?

为了把它放在上下文中,我正在研究一种静态方法来对BufferedImage进行着色,通过从给定图像创建图形设备,并使用它渲染半透明蒙版,处理图形并返回图像。它可以工作,但您必须在给定的十六进制颜色代码中自己定义alpha。我想给一个Color对象,并在0和1.0之间加倍,以确定着色的强度。到目前为止,这是我的代码:

public static Image tintImage(Image loadImg, int color) {
    Image gImage = loadImg;
    Graphics2D g = gImage.image.createGraphics();
    Image image = new Image(new BufferedImage(loadImg.width, loadImg.height, BufferedImage.TYPE_INT_ARGB));
    for(int x = 0; x < loadImg.width; x++) {
        for(int y = 0; y < loadImg.height; y++) {
            if(loadImg.image.getRGB(x, y) >> 24 != 0x00) {
                image.image.setRGB(x, y, color);
            }
        }
    }
    g.drawImage(image.image, 0, 0, null);
    g.dispose();

    return gImage;
}

1 个答案:

答案 0 :(得分:2)

您可以使用较低的alpha格式构建旧的Color。

Color cNew = new Color(cOld.getRed(), cOld.getGreen(), cOld.getBlue(), 0x80);

使用Color(int r, int g, int b, int a)构造函数。