0

画像/バッファに変更されないJava2Dシミュレーションの一部を描画して、そのプリミティブを毎回再描画する必要がないようにするにはどうすればよいですか?

Java2Dシミュレーションの一部で、何千もの小さな線を描く必要があります。ただし、アプリのこの部分は一度描画されると変更されないため、ループの反復ごとに何千ものプリミティブを再描画することは意味がありません(アクティブレンダリングを実行します)。

では、どのオブジェクトを使用して描画して保存し、この画像全体をキャンバスに描画して、その上に何が変わるかを描画できるようにしますか?

4

2 に答える 2

3

BufferedImageに描画し、後で、の内容をのBufferedImageようにSwingコンポーネントに描画することができJPanelます。

に描画するにはBufferedImage、を使用して画像のコンテキストcreateGraphicsを取得します。Graphics2D

BufferedImage img = new BufferedImage(width, height, type);
Graphics2D g = img.createGraphics();
// do drawing using the Graphics2D object.
g.dispose();

その後、メソッドをオーバーライドして、の内容BufferedImageをaに描画します。JPanelpaintComponent

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(img, 0, 0, null);  // Draw img onto the JPanel.
}
于 2009-10-25T02:29:47.387 に答える
0

getPreferredSize()をオーバーライドして画像のサイズを返すか、JPanelで画像のサイズと同じサイズを設定する必要があることに注意してください。これを行わないと、JPanelサブクラスでレイアウトの問題が発生します。

于 2009-10-25T15:43:14.730 に答える