是否有可能创建自己的Graphics2D并与Applet中的另一个结合?

时间:2011-12-29 14:59:54

标签: java caching applet drawing buffer

通常,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?

1 个答案:

答案 0 :(得分:1)

我同意Raveline,BufferedImage是我想要解决这个问题的地方。然而,双重缓冲是您在深入研究之前需要了解的概念。

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