2011-12-29 5 views
0

通常、アプレットは、画面上で終了するGraphics2Dオブジェクトを持つ異なるメソッドを呼び出します。私自身のGraphics2Dを作成し、アプレットで別のものと結合することは可能ですか?

このプロセスでは、メソッドはこのオブジェクトの操作と描画を行います。

しかし私の問題は、フレームごとに計算して描画する必要がある非常に静的な画像があることです。

キャッシュできるグラフィックスオブジェクトを作成し、移動オブジェクトを再適用するにはどうすればよいですか?私はこの静的バックグラウンドドロワを持っている例では、Graphics2Dオブジェクトはアプレットからのものです。

private Graphics2D drawbackground(Graphics2D g2d) { 
    // Debug grid layer 
    int x = 0; 
    int y = 0; 

    for (int i = 0; i < 9; i++) { 
    if (x == 0 && y == 0 || y % 82 == 0) { 
     x = 0; 
     for (int t = 0; t <= 5; t++) { 
     g2d.setColor(Color.WHITE); 
     g2d.drawLine(x, y + 41, x + 41, y); 
     g2d.drawLine(x + 41, y, x + 82, y + 41); 
     g2d.drawLine(x, y + 41, x + 41, y + 82); 
     g2d.drawLine(x + 82, y + 41, x + 41, y + 82); 
     x += 82; 
     } 
     y += 41; 
    } else if (y % 41 == 0) { 
     x = 41; 
     for (int t = 0; t <= 5; t++) { 
     g2d.setColor(Color.WHITE); 
     g2d.drawLine(x, y + 41, x + 41, y); 
     g2d.drawLine(x + 41, y, x + 82, y + 41); 
     g2d.drawLine(x, y + 41, x + 41, y + 82); 
     g2d.drawLine(x + 82, y + 41, x + 41, y + 82); 
     x += 82; 
     } 
     y += 41; 
    } 
    } 
} 

は、それはこれらの図を生成し、そして私のアプレットは、各描画のためにこれらのdrawLinesを介して実行するために時間を使用する必要はありませんので、キャッシュされたコピーで再利用することは可能ですか?

+3

なぜ、BufferedImageを使用していないのですか? – Raveline

答えて

1

私はRavelineに同意します、BufferedImageは私がこの解決策に行く場所です。しかし、ダブルバッファリングは、あなたがこれに深入りする前にあなたの頭を掴む必要があるというコンセプトです。

http://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html

+0

現在描画されている現在のGraphicsオブジェクトに頼らずに透明なBufferedImageを作成するにはどうすればよいですか? –

+0

私はこれを使って見つけたばかりです: BufferedImage offscreen = new BufferedImage(width、height、BufferedImage.TYPE_INT_ARGB); \t Graphics2D empty = offscreen.createGraphics(); 私はなぜ前に混乱していたのか分かりません。助けてくれてありがとう。 –

関連する問題