画像貼り付け

まずは絵を貼り付けます。アプレットと同様にdrawImage()を使うんだろうと思ってAPIを見ていくとjavax.microedition.lcdui.GraphicsdrawImage(Image img, int x, int y, int anchor)がありました。

問題はImageをどう読み込むかです。アプレットではjava.applet.Applet.getImage()を使ってましたが、javax.microedition.midlet.MIDletには対応するメソッドがありません。

「どうすりゃいいんかなあ」と思いながらサンプルを探すとAbout.javaがJavaのロゴを画像表示してるので、これを参考にしました。どうやらjavax.microedition.lcdui.Image.createImage(String name)を使うようです。ここのnameは実行しているclassファイルの位置をルートとして指定するようです。

ここまで解ったので適当な画像(01.png)を準備してコードを書き換えます。ImageSample02.javaになります。

本質的な変更はImageCanvasクラスのみで、まずは

private Image image;

と画像を保持するインスタンス変数を導入します。続いて、

ImageCanvas() {
    try {
        image = Image.createImage("/images/01.png");
    } catch (java.io.IOException ex) {
        System.out.println("Cannnot read /images/01.png");
    }
}

[注意]FCSではcreateImage(String name)IOExceptionを投げるようになりました。EA1からのユーザは注意しましょう。

とコンストラクタを作成し、そこで画像を読み込ませます。読み込んだ画像を

protected void paint(Graphics g) {
    g.drawString("Dancing Radio", 0, 0, Graphics.TOP | Graphics.LEFT);
    g.drawImage(image, getWidth() / 2, getHeight() / 2, Graphics.HCENTER | Graphics.VCENTER);
}

paintメソッドで表示させて完了です。

drawImage()の最後の引数をGraphics.HCENTER | Graphics.VCENTERとして、画像の中心をCanvasの中心(getWidth() / 2, getHeight() / 2)に一致させてます。

ではコンパイル・検証・実行してみましょう。

D:\midp-fcs\segi>javac -bootclasspath /midp-fcs/classes ImageSample02.java
D:\midp-fcs\segi>preverify -classpath .;/midp-fcs/classes ImageSample02 ImageCanvas
D:\midp-fcs\segi>cd output
D:\midp-fcs\segi\output>set SCREEN_DEPTH=8
D:\midp-fcs\segi\output>midp ImageSample02

ディレクトリ構成は

[midp-ea1]---[segi]-+- ImageSample02.java
                    |  ImageSample02.class(検証前)
                    |  ImageCanvas.class(検証前)
                    +- [output]-+- ImageSample02.class(検証後)
                                |  ImageCanvas.class(検証後)
                                +-[images]-+- 01.png

のようになります。createImage("/images/01.png")としてるので、それに合わせてディレクトリを作成し画像を置いてます。実行すると下記の画面が表示されます。

画面イメージ


前の項目へ次の項目へ
「MIDPで遊ぼう!」のページへ
せぎてつ伝言板
このページの感想をどうぞ!
お名前(匿名OK):

メールアドレス:
最終更新日 : 2000年10月7日(土)
tetsu@segi.org