/**
* 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);
}