import javax.microedition.lcdui.*;
//半透明イメージの描画(キャンバス)
public class AlphaCanvas extends Canvas {
Image image0=null;//イメージ
Image image1=null;//イメージ
Image image2=null;//イメージ
Image image3=null;//イメージ
//コンストラクタ
AlphaCanvas() {
//画像ファイルの読み込み
try {
image0=Image.createImage("/sorami.png");
image1=createAlphaImage(image0,150);
image2=createAlphaImage(48,48,0xFF0000,150);
image3=createColorImage(image0,0xFF0000);
} catch (Exception e) {
System.out.println(e.getClass().getName());
}
}
//半透明イメージの生成
Image createAlphaImage(int width,int height,int color,int trans) {
int[] rgb=new int[width*height];
for (int i=0;i<rgb.length;i++) {
rgb[i]=(color&0xFFFFFF)|(trans<<24);
}
return Image.createRGBImage(rgb,width,height,true);
}
//半透明イメージの生成
Image createAlphaImage(Image image,int trans) {
int width =image.getWidth();
int height=image.getHeight();
int[] rgb=new int[width*height];
image.getRGB(rgb,0,width,0,0,width,height);
for (int i=0;i<rgb.length;i++) {
rgb[i]=(rgb[i]&0xFFFFFF)|(trans<<24);
}
return Image.createRGBImage(rgb,width,height,true);
}
//色変更イメージの生成
Image createColorImage(Image image,int color) {
int width =image.getWidth();
int height=image.getHeight();
int[] rgb=new int[width*height];
image.getRGB(rgb,0,width,0,0,width,height);
for (int i=0;i<rgb.length;i++) {
if ((rgb[i]&0xFF000000)!=0) rgb[i]=0xFF000000|color;
}
return Image.createRGBImage(rgb,width,height,true);
}
//描画
public void paint(Graphics g) {
//画面の塗り潰し
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
//イメージの描画
g.drawImage(image0, 0, 0,g.LEFT|g.TOP);
//半透明イメージの描画
g.drawImage(image1,20,20,g.LEFT|g.TOP);
g.drawImage(image1,40,40,g.LEFT|g.TOP);
g.drawImage(image1,60,60,g.LEFT|g.TOP);
//半透明矩形の描画
g.drawImage(image2, 0, 50,g.LEFT|g.TOP);
g.drawImage(image2,20, 70,g.LEFT|g.TOP);
g.drawImage(image2,40, 90,g.LEFT|g.TOP);
g.drawImage(image2,60,110,g.LEFT|g.TOP);
//塗り潰しイメージの描画
g.drawImage(image3, 0, 120,g.LEFT|g.TOP);
}
}
|