Двойная буферизация с AWT - PullRequest
7 голосов
/ 17 мая 2010

Возможна ли двойная буферизация (в java) с помощью awt? В настоящее время я знаю, что Swing не должен использоваться с AWT, поэтому я не могу использовать BufferStrategy и еще много чего (у меня уже есть код, написанный на AWT, который я не хочу переписывать в Swing).

Если двойная буферизация возможна с помощью awt, нужно ли писать буфер вручную? В отличие от свинга, у awt, похоже, нет такой же встроенной возможности двойной буферизации.

Если мне нужно написать код вручную, есть ли хороший учебник, чтобы посмотреть? Или начинающему программисту проще / лучше использовать свинг вместо этого?

Извините за многоэтапный вопрос. Спасибо за ваше время :) 1007 *

1 Ответ

6 голосов
/ 17 мая 2010

Это легко ответить в Интернете. Просто найдите «двойной буфер AWT», и вы найдете много примеров. Вы даже можете увидеть старый пример , который я написал в 1998 году на Java 1.0 AWT. Вам просто нужно создать свой собственный объект Graphics и нарисовать изображение, а затем скопировать это изображение на холст. Вот ключевой фрагмент кода в моем примере:

  public void paint(Graphics g) {
    if (doubleBuffer) {
      paintSky(top.gBuf);
      g.drawImage(top.buf, 0, 0, this);
    } else {
      paintSky(g);
    }
  }
...