Java 如何从BuffereImage对象使用graphics2D;getGraphics();方法?

Java 如何从BuffereImage对象使用graphics2D;getGraphics();方法?,java,swing,bufferedimage,Java,Swing,Bufferedimage,我试图制作一个2D游戏,但我不明白为什么我以前的画面还在那里。其效果是,当在x上以1像素/帧移动矩形时,我在屏幕上绘制了一个长条 在类主体中,我声明了下面的对象,如下所示: private int x, y; private BufferedImage image; private Graphics2D g; 这就是我初始化的方式: x = 10, y = 25; image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_BGR);

我试图制作一个2D游戏,但我不明白为什么我以前的画面还在那里。其效果是,当在x上以1像素/帧移动矩形时,我在屏幕上绘制了一个长条

在类主体中,我声明了下面的对象,如下所示:

private int x, y;
private BufferedImage image;
private Graphics2D g;
这就是我初始化的方式:

x = 10, y = 25;
image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_BGR);
g = (Graphics2D) image.getGraphics();
r = new Rectangle(x, y, 10, 10);
我有绘制图形的方法:

Graphics g2 = this.getGraphics();
g2.drawImage(image, 0, 0, getWidth(), getHeight(), null);
g.draw(r);
g2.dispose();
我还有一个移动矩形的勾选方法:

x++;
该类扩展了Canvas并实现了游戏循环的Runnable,我使用了一个JFrame对象

这是10x10矩形移动的结果:

1)要更快地获得更好的帮助,请发布一个或。2) 例如,获取图像的一种方法是热链接到中看到的图像。3) 请注意,缓冲图像将存储所有以前的图形。要否定这一点,在绘制游戏的最新部分之前,先用BG颜色填充它(或清除它)。
Graphics g2=this.getGraphics()如果“this”是一个组件,则说明它做错了。但我不会进一步猜测(因为我讨厌猜测)。发布MCVE.For.1)要更快地获得更好的帮助,请发布or。2) 例如,获取图像的一种方法是热链接到中看到的图像。3) 请注意,缓冲图像将存储所有以前的图形。要否定这一点,在绘制游戏的最新部分之前,先用BG颜色填充它(或清除它)。
Graphics g2=this.getGraphics()如果“this”是一个组件,则说明它做错了。但我不会进一步猜测(因为我讨厌猜测)。发布一个MCVE。用于。