イメージは,
イメージに対応する型 Image の説明を見ると,
Image クラスは抽象クラスである。イメージはプラットホーム固有の方法 で得られなければならない。
と書いてある.「抽象クラス」というのは,そのサブクラスをいくつか定義し て,そのサブクラスに属するオブジェクトは作られるが,そのクラスだけに属 するオブジェクトは作られないというものである.
しかし,具体的にどのようなサブクラスが存在するかというのは,プラット ホーム(処理系を実行する環境のこと.具体的には機種,OS,ライブラリなど) 固有である.しかし,Imageクラスを使う側はそれらのサブクラスの存在を意 識しなくても良い.
ファイルからイメージを読み込むときには,AWTの実装に固有な動作をさせる ために使う Toolkit というクラスのgetImageというメソッドを呼ぶ.現在の AWT に 対応する Toolkit クラスのオブジェクトはToolkit.getDefaultToolkit() で 得られるので,イメージを得るには, 「Toolkit.getDefaultToolkit().getImage(ファイル名)」のようにする. getImage では JPEG形式と png形式, GIF形式の画像ファイルが読み込み可能である.
// AWT を使うので,java.awt.* を import する.
import java.awt.*;
// イベント処理をおこなうので,
import java.awt.event.*;
// 独立したウィンドウを作るので,DrawImageは Frameのサブクラスとして定義
class DrawImage extends Frame implements KeyListener{
// イメージを表す Image クラスの変数 image の宣言
Image image;
// DrawImageクラスのコンストラクタ
public DrawImage(){
// 親クラスである Frameクラスのコンストラクタを
// タイトル文字列を "DrawImage"として呼ぶ.
super("DrawImage");
// 現在の Toolkit を得て,getImageで PNG 形式のファイルを指定して,
// イメージを得る.
image=Toolkit.getDefaultToolkit().getImage("test.png");
addKeyListener(this);
}
public static void main(String [] args){
// DrawImageクラスのインスタンスを作る.
DrawImage frame=new DrawImage();
// ウィンドウのサイズを300 x 300 に指定する.
frame.setSize(300,300);
// ウィンドウを表示する.
frame.setVisible(true);
}
public void paint(Graphics g){
// イメージ image を (100,100)を左上にして表示する.
g.drawImage(image,100,100,this);
// イメージ image を (100,150)を左上にして,幅80高さ80で表示する.
g.drawImage(image,100,150,80,80,this);
}
// キーを押した際に発生するイベントを以下のメソッドで捕まえる.
public void keyPressed(KeyEvent e){
int key=e.getKeyChar();
// 入力したキーのコードが「q」だった時は終了するl
if(key=='q') System.exit(0);
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
Graphicsクラス のメソッド drawImage には,メソッドpaint中の2つめの
呼び出しのように,もとのイメージを拡大縮小して,表示させる機能もある.
上のプログラムを動かすためには,test.pngという PNG 形式の画像ファイル を作る必要がある.教育用計算機センターのシステムでは,gimp, display などのコマンドで png 形式の画像ファイルを作ることができる (PNGの場合は,背景が透明の画像ファイルが作れるので役に立つ).
gimpの使い方は, はいぱー ワークブック「描画システム」にある.
| 複数のイメージをdrawImageした際に、上のイメージの背景が長方形の枠となって、 下のイメージを覆ってしまうことがある。これは、背景色が透明でないイメージ ファイルを作ってしまった場合に起きる症状である。背景色が透明なイメージファ イルは、gimpで画像ファイルを新規作成する際に、「塗り潰し(Fill Type)」 を「透明(Transparent)」を選択し、ファイルを保存する際に「PNG形式」を選択す ると簡単に作ることができる。 |