Можно ли создать свой собственный Graphics2D и объединить с другим в апплете? - PullRequest
0 голосов
/ 29 декабря 2011

Обычно апплет будет вызывать разные методы, которые будут иметь объект Graphics2D, который заканчивается на экране.

В процессе методы будут манипулировать и рисовать вещи на этом объекте.

Но моя проблема в том, что у меня есть очень статичные изображения, которые нужно рассчитать и нарисовать для каждого кадра.

Как я могу построить графический объект, который я могу кэшировать, и повторно применить движущиеся объекты? Для примера у меня есть этот статический фоновый ящик, объект Graphics2D - тот из Апплета.

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;
    }
    }
}

Можно ли сгенерировать эти чертежи и повторно использовать их в кэшированной копии, чтобы моему апплету не требовалось время для прохождения этих drawLines для каждого рисования?

1 Ответ

1 голос
/ 29 декабря 2011

Я согласен с Raveline, BufferedImage - это то место, куда я мог бы пойти для этого решения.Тем не менее, двойная буферизация - это концепция, с которой вам нужно разобраться, прежде чем углубляться в это.

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

...