背景画像の上からアルファチャネルを設定した赤色のイメージを描画します。

下のリンクをクリックすると、このページで作成したアプレットが実行されます。
アルファチャネル設定イメージ

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして alpha.java の名前で保存して下さい。
    //★ アルファチャネル設定イメージのテスト    前田 稔
    //   配列を使ってイメージ画像のピクセル値を生成する 
    import java.applet.*;
    import java.awt.*;
    import java.awt.image.*;
    
    public class alpha extends Applet
    {   Image   back = null;
        Image   img;
    
        public void init()
        {   setBackground(Color.gray);
            back = getImage(getDocumentBase(),"ayu.jpg");
    
            int ary[] = new int[280 * 170], index = 0;
            for(int i=0; i<170; i++)
            {   for(int j=0; j<280; j++)
                    ary[index++] = (i<<24) | (255<<16);
            }
            ColorModel cm = ColorModel.getRGBdefault();
    
            // 横=280ピクセル、縦=170ピクセル、ColorModel、ピクセル配列、オフセット、1列のサイズ
            MemoryImageSource m = new MemoryImageSource(280, 170, cm, ary, 0, 280);
            img = createImage(m);
        }
    
        public void paint(Graphics g)
        {   super.paint(g);
            if (back!=null)
            {   g.drawImage(back,0,0,this);  }
            g.drawImage(img, 0, 0, this);
        }
    }
    
  2. JPEG の画像(ayu.jpg)をプログラムと同じフォルダーに格納して下さい。
    テストするときは、適当なサイズの JPEG 画像であれば何でもかまいません。
  3. ホームページを表示する alpha.htm を作成します。
    <html>
      <body>
        <h3>Alpha Channel</h3>
        <applet code="alpha.class" width="280" height="170">
        </applet>
      </body>
    </html>
    

Java プログラムの説明

  1. Applet のプログラムは java.applet.* を import して、extends(クラスの継承) で Applet を指定して下さい。
    Java ウインドウ操作用の API を使用するので java.awt.* をインポートします。
    Image back; は背景画像(ayu.jpg)の領域です。
    Image img; は MemoryImageSource() で生成するグラデーション画像の領域です。
        Image   back = null;
        Image   img;
        
  2. init() はアプレットの初期化を行うメソッドです。
    背景色を gray に設定しています。
    getImage(getDocumentBase(),"ayu.jpg")で背景画像を入力します。
        public void init()
        {   setBackground(Color.gray);
            back = getImage(getDocumentBase(),"ayu.jpg");
        
  3. アルファチャネル付きの画像を作成するツールは少なく、仮に作成出来てもアルファチャネル付きでロードする方法が見つかりません。
    Alpha Cannel 対応の BMP32bit ファイルの作成と描画ツールは 前田稔の超初心者のプログラム入門から「Game Program & 各種 Tool」から提供しています。
    そこで MemoryImageSource を使ってプログラムでイメージ画像を生成しました。
    int ary[] がピクセルの並びで、横=280ピクセル、縦=170ピクセルの大きさで確保しています。
    ピクセルは、先頭から 24〜31= アルファ成分、16〜23= 赤色成分、8〜15= 緑色成分、0〜7= 青色成分で構成されます。
    アルファ成分には、グラデーションするために0〜169の値を設定します。
    アルファ成分は全て1(0Xff)で不透明に、全て0(0X00)で透明になります。
    RGB は全て赤(0XFF0000)に設定しています。
            int ary[] = new int[280 * 170], index = 0;
            for(int i=0; i<170; i++)
            {   for(int j=0; j<280; j++)
                    ary[index++] = (i<<24) | (255<<16);
            }
            ColorModel cm = ColorModel.getRGBdefault();
    
            // 横=280ピクセル、縦=170ピクセル、ColorModel、ピクセル配列、オフセット、1列のサイズ
            MemoryImageSource m = new MemoryImageSource(280, 170, cm, ary, 0, 280);
            img = createImage(m);
        
  4. paint() メソッドで背景画像の上からグラデーション画像を描画します。
        public void paint(Graphics g)
        {   super.paint(g);
            if (back!=null)
            {   g.drawImage(back,0,0,this);  }
            g.drawImage(img, 0, 0, this);
        }
        

Java Game Program