- - PR -
swingでグラフィックコンテキストは取得できますか?
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-10-17 10:30
こんにちは、さくらばです。
Swing の場合、何もしなくても勝手にダブルバッファリングにしてくれます。 ダブルバッファリングしたくない場合は JComponent#setDoubleBuffered メソッドでやめることができます。 Swing のダブルバッファリングはよく考えられていて、コンポーネントごとに バッファを持ち合うようなことはしませんし、Windows であれば DirectX の VRAM に直接バッファを持つようにするので高速に行えます。 これを自作するとなると BufferStrategy クラスを使用して行うのですが、 それなりに面倒です。 # だいたいの書籍の著者はかなり怠慢です。中にはいい本もあるのですが... # Swing に AWT の作法で書いてみたり、バックコンパチのためにだけに # 残されているようなクラスを使っていたりします。 # 例えば JFrame#setDefaultCloseOperation を使わずに WindowEvent # でフレームのクローズ処理していたり、Vector や Hashtable などいまさら # 使う意味のないクラスを使っていたりする本は要注意本です。 | ||||
|
投稿日時: 2003-10-17 10:35
こんにちは、さくらばです。
ダブルバッファリングしてます。ただ VolatileImage は使っていないので、 それほど高速ではないです。 # ちなみに VolatileImage が DirectX の VRAM に直接バッファを取っている # クラスです。 Swing は J2SE 1.4 (特に J2SE 1.4.2) でずいぶんパフォーマンスアップし ているので、GUI があるのであれば J2SE 1.4 を使うべきだと思います。 | ||||
|
投稿日時: 2003-10-17 14:21
unibon です。こんにちわ。
お考えのとおりだと思います。 Swing での「ダブルバッファ」は、そのバッファを アプリケーション(Swing の API を利用するプログラム)からは自由に使えないので、 たとえば Java の入門書に載っているような「ダブルバッファ」とは意味合いが違います。 #余談ですが、なんでいずれも「ダブル」なんでしょう? #どちらにしても「シングルバッファ」だと思うのですが。 #もしかしたら最終的に描画対象となるスクリーンも「フレームバッファ」として #バッファのひとつに勘定するからなのでしょうか。 なので、入門書に載っているダブルバッファの手法を、 Swing 上でやると、自然に「トリプルバッファ」になります。 | ||||
