Swing/DoubleBuffering のバックアップ差分(No.5)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/DoubleBuffering へ行く。
- 1 (2005-12-19 (月) 16:02:40)
- 2 (2006-02-04 (土) 05:42:22)
- 3 (2006-02-27 (月) 15:49:11)
- 4 (2006-04-12 (水) 19:42:00)
- 5 (2006-09-12 (火) 17:24:39)
- 6 (2006-10-18 (水) 17:54:12)
- 7 (2007-02-13 (火) 15:52:26)
- 8 (2007-03-13 (火) 20:34:34)
- 9 (2007-07-10 (火) 12:32:00)
- 10 (2013-09-15 (日) 00:23:04)
- 11 (2014-09-14 (日) 01:15:18)
- 12 (2014-09-30 (火) 00:29:51)
- 13 (2022-08-05 (金) 17:32:59)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:DoubleBufferingで自由曲線を描画
#navi(../)
*DoubleBufferingで自由曲線を描画 [#bc55cccd]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-12-19~
更新日:&lastmod;
#contents
**概要 [#mba2e720]
チラつかないようにDouble Bufferingを行ってパネルにお絵かきします。
#screenshot
**サンプルコード [#cc955806]
panel = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(offImage!=null) ((Graphics2D)g).drawImage(offImage, 0, 0, this);
}
};
panel.setBorder(BorderFactory.createEmptyBorder());
panel.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
if(offImage==null) {
offImage = (BufferedImage)createImage(getWidth(), getHeight());
}
Graphics2D g2d = (Graphics2D)offImage.createGraphics();
g2d.setStroke(new BasicStroke(3.0F));
g2d.setPaint(Color.black);
g2d.drawLine(startPoint.x, startPoint.y, p.x, p.y);
g2d.dispose();
repaint();
startPoint = e.getPoint();
}
});
panel.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
startPoint = e.getPoint();
}
});
-&jnlp;
-&jar;
-&zip;
**解説 [#t35e18f2]
上記のサンプルでは、マウスリスナを使ってパネル上にお絵かきをしています。
画面がチラつかないようにするためによく使われるダブルバッファリングの手法を使っています。
//**参考リンク
**コメント [#p0458ab1]
#comment