SWT Tips and Samples 基礎編 > Canvas |
|
Canvas描画を行いたいときに使うWidgetです。SwingやAWTでは、paintメソッドやpaintComponentメソッドをオーバーライドすることで描画ルーチンを記述しますが、SWTのCanvasでは、paintListenerを追加することで描画部分を記述します。描画には、PaintEventのGC(グラフィックスコンテキスト)を取得して、描画用のメソッドを実行します。下の例では、前もってImageオブジェクトを生成しpaintComponentの中でImageを実際に描きこんでいます。スクリーンショットソースコード (CanvasTest.java)import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; public class CanvasTest { public static void main(String[] args) { new CanvasTest(); } public CanvasTest() { Display display = new Display(); Shell shell = new Shell(display); shell.setText("CanvasTest"); shell.setLayout(new FillLayout()); final Image image = new Image(display, 200, 100); Color red = display.getSystemColor(SWT.COLOR_RED); Color blue= display.getSystemColor(SWT.COLOR_BLUE); GC gc = new GC(image); //1st object gc.setBackground(red); gc.fillRectangle(10,10,80,80); //2nd object gc.setForeground(blue); gc.setBackground(blue); gc.fillOval(110,10,80,80); gc.dispose(); red.dispose(); blue.dispose(); Canvas canvas = new Canvas(shell, SWT.NONE); canvas.addPaintListener(new PaintListener() { public void paintControl(PaintEvent e) { e.gc.drawImage(image, 0, 0); } }); shell.setSize(250,150); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } 最新更新日: 2004年9月1日 |
- PR -
【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!
オフィス用品・オフィス家具 価 格 交 渉 可!
|
||||
|
|||||
Copyright(C) 2003,2004 Jasmin Project. All Right Reserved. |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||