<更新記録>
2007年 12月 18日
執筆

姉妹サイト検索 Web検索


Image

Image

Colorクラスが色を、Fontクラスがフォントを扱うのに対して、 Imageクラスは、画像を扱います。

ImageData

Imageクラスのコンストラクタには、ImageDataオブジェクトを指定してImageオブジェクトを作成することができます。 ImageDataクラスは、デバイス非依存に画像をデータとして表現する クラスで、システムリソースは消費しません。 ImageDataオブジェクトからImageオブジェクトが作成されてはじめてシステムリソースは消費されます。

画像を表示する

すでに存在する画像ファイルから画像を表示する方法を解説します。 画像の表示には、Imageクラスの使用が必要です。 Eclipse APIが現在サポートするフォーマット形式は、BMP、ICO、JPEG、GIF、PNG、TIFFのみ です。 その他のフォーマットはサポートされていません。

画像を描画するためには、画像ファイルをImageDataオブジェクトに変換し、 ImageDataオブジェクトからImageオブジェクトを作成し、 GCオブジェクトのdrawImage(Image)メソッドにより画像を描画します。 サンプルとして用意したImageCanvasクラスでは、imageInput引数で取得したストリームから ImageDataオブジェクトを作成しています。

import java.io.InputStream;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;

public class ImageCanvas extends Canvas {
	ImageData imageData;
	
	public ImageCanvas(Composite parent, InputStream imageInput) {
		super(parent, SWT.NONE);
		
		final byte width = 100;
		final byte height = 100;
		
		imageData = new ImageData(imageInput).scaledTo(width, height);
		addPaintListener(paintListener);
		
		setSize(width, height);
	}
	
	
	private PaintListener paintListener = new PaintListener() {
		public void paintControl(PaintEvent e) {
			
			GC gc = e.gc;
			Image image = new Image(Display.getCurrent(), imageData);
			gc.drawImage(image, 0, 0);
			image.dispose();
			
		}
	};
}
ImageDemonstrateクラスは、ImageCanvasクラスを使用するためのエントリポイント(main)クラスです。 ImageDemonstrateクラスのあるフォルダと同じ位置にある [ myImage.jpg ( zip ) ] というファイルを指定して、 InputStreamオブジェクトを作成しています。
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class ImageDemonstrate {
	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		
		ImageCanvas imageCanvas = 
			new ImageCanvas(shell, 
					ImageDemonstrate.class.
					getResourceAsStream("./myImage.jpg"));
		
		shell.pack();
		shell.open();
		
		while (!shell.isDisposed()) {
			if (display.readAndDispatch()) {
				display.sleep();
			}
		}
		
		display.dispose();
	}
}

画像を作成する

画像の作成は、ImageDataオブジェクト上に作成することができます。 それの表示は、GC#drawImageで作成したImageDataオブジェクトを表示するだけです。


JFaceResources / <戻る> / <ページ先頭> / PaletteData
Powered by VeryEasyCMS