2013-10-04 1 views
0

Мне интересно, как человек может изменить альфа-прозрачность цвета, если задан шестнадцатеричный цветовой код. Например, если дано Color.red.getRGB() Как я могу изменить его на альфа до 0x80?Как изменить альфа предопределенного шестнадцатеричного цвета?

Чтобы выразить это в контексте, я работаю над статическим методом, чтобы оттолкнуть BufferedImage, создав графическое устройство с данного изображения и сделав полупрозрачную маску с этим, избавкой от графики и возвратом образ. Он работает, но вы должны сами определить альфа в данном шестнадцатеричном цветовом коде. Я хочу дать объект «Цвет» и удвоить между 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; 
} 
+0

Также рассмотрите «RescaleOp», увиденный здесь (http://stackoverflow.com/a/5864503/230513), чтобы настроить цветные полосы изображения. – trashgod

ответ

2

Вы можете создать новый цвет из старого с нижней альфа.

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

Использование конструктора Color(int r, int g, int b, int a).

Смежные вопросы