Accelerated Graphics が必要ない場合は、BufferedImage
で描画できますGraphics2D
。にデータを入れたら、コンポーネントに をBufferedImage
ペイントするだけです。BufferedImage
これにより、話しているちらつきが回避されます。
BufferedImage の作成は簡単です。
int w = 800;
int h = 600;
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
次に、グラフィックス コンテキストを使用してオブジェクトをその上に描画できます (おそらく独自のレンダリング関数で):
Graphics2D g = bi.createGraphics();
g.drawImage(img, 0, 0, null);
//img could be your sprites, or whatever you'd like
g.dipose();//Courtesy of MadProgrammer
//You own this graphics context, therefore you should dispose of it.
次に、コンポーネントを再描画するときに、その上に BufferedImage を 1 つのピースとして描画します。
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(bi, 0, 0, null);
}
BufferedImage をバック バッファーとして使用し、描画が完了したら、コンポーネントに再描画するようなものです。