【问题标题】:How would one change the alpha of a predefined hexadecimal color?如何更改预定义的十六进制颜色的 alpha?
【发布时间】:2013-10-12 02:14:47
【问题描述】:

我想知道如果给定十六进制颜色代码,人们如何更改颜色的 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;
}

【问题讨论】:

  • 还要考虑RescaleOp,看到here,来调整图像的色带。

标签: java colors hex transparency


【解决方案1】:

您可以从具有较低 alpha 的旧颜色构造新颜色。

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

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

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2018-05-06
    • 1970-01-01
    • 2021-12-21
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多