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日
 
関連リンク
Eclipse API ドキュメント

- PR -

プレゼンテーション作成ソフト無料お試し版配信中

【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!

オフィス用品・オフィス家具 価 格 交 渉 可! 
◎ 目指せ★業界最安値 ★ ◎ オフィネット・ドットコム株式会社

注文から納品まで驚きの早さ!!【ASKULカタログ】はこちらから・・・

マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。


Copyright(C) 2003,2004 Jasmin Project. All Right Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送