gpt4 book ai didi

java - 来自不同类别的双缓冲区?

转载 作者:行者123 更新时间:2023-12-01 06:19:37 24 4
gpt4 key购买 nike

这在我的类中添加到我的 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);
}
}
}

}

最佳答案

使您的 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();
}

}

关于java - 来自不同类别的双缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com