1

これは、私の JFrame に追加された私のクラスにあります。このクラスをオフスクリーンで使用して別のクラスからグラフィックを描画する方法を教えてもらえますか? たとえば、Player クラス (Player.java) があり、そのクラスから画像やその他のものを描画しますが、描画元の各クラスで新しいダブル バッファリング メソッドを作成せずに画像をバッファリングしますか?

package Display;

import Graphics.Player1;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
      import javax.swing.JPanel;



      public class DrawArea extends JPanel implements Runnable{      
    Thread drawLoop = new Thread(this);
    BufferedImage image = new BufferedImage(1000, 700, BufferedImage.TYPE_INT_RGB);
   public Graphics offScreen = image.getGraphics();

    public DrawArea() {
        setSize(1000, 700);
        drawLoop.start();

    }

    public void update(Graphics g) {
        paint(g);
    }

    public void paint(Graphics g) {
        offScreen.setColor(Color.yellow);
        offScreen.fillRect(0, 0, 1000, 700);

        g.drawImage(image, 0, 0, null);
    }

    public void run() {
        while(true) {
            repaint();
            try {
                drawLoop.sleep(90);
            } catch (InterruptedException ex) {
                Logger.getLogger(DrawArea.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

}
4

2 に答える 2

0

DrawingPanel を次のようにします。

public class DrawingPanel extends Canvas {

    public DrawingPanel(){
        setVisible(true);
    }

}

メインフレーム。

public class MyFrame extends JFrame implements Runnable{

    DrawingPanel panel;

    public MyFrame(){
        panel = new DrawingPanel();
        add(panel);
        setVisible(true);
        panel.createBufferStrategy(2);
        new Thread(this).start();
    }

    public void run(){
        BufferStrategy buffer = panel.getBufferStrategy();
        while (true){
            Graphics g = buffer.getDrawGraphics();
            render(g);
            g.dispose();
            buffer.show();
            try {
                Thread.sleep(90);
            } catch (Exception e){}
        }
    }

    public void render(Graphics g){
        // Do your drawing here
    }

    public static void main(String[] args){
        new MyFrame();
    }

}
于 2012-10-26T09:59:54.040 に答える
-1

次のように Player クラスを作成します (ペイント メソッドを含む Drawable というインターフェイスを作成することもできます)。

public class Player {

    public void paint(Graphics g) {
        //Draw player specigfic things
    }
}

DrawArea で、プレーヤーが Player オブジェクトである paint メソッドにこれを追加します。

player.paint(g);
于 2012-10-26T12:23:00.053 に答える