/**
* CreateAlphaImage() 繪製帶半透明的圖片
*
* @param alphaValue
* 透明度,其取值如0x88FFFFFF,前兩位十六進位表示透明度,88表示透明度為50%,如果是00表示全透明,FF表示不透明。
* @param srcImage
* 需要畫成半透明的圖片
* @return Image 半透明處理後的圖片
*/
private Image createAlphaImage(Image srcImage, int alphaValue) {
int w = srcImage.getWidth();
int h = srcImage.getHeight();
int len = w * h;
int srcRGB[] = new int[len];
int dscRGB[] = new int[len];
try {
srcImage.getRGB(srcRGB, 0, w, 0, 0, w, h);
} catch (Exception ex) {
ex.printStackTrace();
}
for (int i = 0; i < len; i++) {
if ((int) (srcRGB[i]) == 0x00FFFFFF) {
dscRGB[i] = srcRGB[i];
} else {
dscRGB[i] = srcRGB[i] & alphaValue;
}
}
return Image.createRGBImage(dscRGB, w, h, true);
}
protected void paint(Graphics g) {
// 建立可變的自訂圖片,指定寬度和高度
Image bufImg = Image.createImage(w, h);
Graphics gg = bufImg.getGraphics();
gg.setColor(0x0000FF);
// 使用白色繪製背景
gg.fillRect(0, 0, w, h);
// 繪製需要的圖片內容
gg.setColor(0xFF0000);
gg.fillRect(w/4,h/4,w/2,h/2);
Image ai = this.createAlphaImage(bufImg, 0x88ffffff);
g.drawImage(ai, 0, 0, Graphics.TOP | Graphics.LEFT);
}