#java #awt #buffer
#java #awt #буфер
Вопрос:
Частью моего кода является этот метод рисования:
public void paint(Graphics g) {
super.paint(g);
refreshSize();
paintSquares(g);
if (drawGrid) {
drawGrid(g);
}
}
как я могу использовать буфер, чтобы остановить его мерцание?
Комментарии:
1. 1. не используйте paint для AWT без особых причин, 2. вместо этого используйте Swing, 3. зависит от нескольких факторов, 4. для лучшей помощи скорее опубликуйте SSCCE / MCVE, short, runnable, compilable
Ответ №1:
Вы можете уменьшить мерцание, перезаписав метод update (Graphics g) пустой реализацией (реализация update по умолчанию отображает фон). Если вы сделаете это, вы должны убедиться, что вы закрасили всю область компонента.
(Примечание: обновление перезаписи действительно помогает только для фрейма — другие компоненты все равно будут мерцать, потому что содержащий фрейм)
Тем не менее, сделайте себе одолжение и переключитесь на Swing.
Редактировать: немного покопавшись, фоновый рендеринг происходит в реализации update() java.awt.Container (Frame является подклассом Container ofc). В сочетании с рендерингом обратного буфера (который вам нужно будет обрабатывать самостоятельно, например, BufferedImage) вы могли бы получить то, что Swing автоматически предоставляет с помощью AWT.