0

16 進数のカラー コードが与えられた場合、人がどのようにして色のアルファ透明度を変更できるのか疑問に思っています。たとえば、 Color.red.getRGB() アルファを 0x80 に変更する方法を教えてください。

これをコンテキストに入れるために、指定された画像からグラフィックデバイスを作成し、それを使用して半分透明なマスクをレンダリングし、グラフィックを破棄して画像を返すことにより、BufferedImage を着色する静的メソッドに取り組んでいます。動作しますが、指定された 16 進カラー コードで自分でアルファを定義する必要があります。Color オブジェクトを指定し、0 と 1.0 の間で 2 倍にして、色合いの強さを決定します。これまでの私のコードは次のとおりです。

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

1 に答える 1

2

アルファが低い古い色から新しい色を作成できます。

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

Color(int r, int g, int b, int a)コンストラクターの使用。

于 2013-10-04T23:16:00.197 に答える