通常,applet会调用不同的方法,这些方法将有一个以屏幕结尾的Graphics2D对象。
在此过程中,方法将操纵和绘制此对象上的内容。
但我的问题是,我有一些非常静态的图像,需要为每一帧计算和绘制。
如何构建一个可以缓存的图形对象,并重新应用移动对象?例如,我有这个静态背景抽屉,Graphics2D对象是Applet中的对象。
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;
}
}
}
是否可以生成这些图纸,并在缓存副本中重复使用它们,因此我的Applet不需要花时间为每次绘制运行这些drawLine?
答案 0 :(得分:1)
我同意Raveline,BufferedImage是我想要解决这个问题的地方。然而,双重缓冲是您在深入研究之前需要了解的概念。
http://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html