Java Graphics: каждый раз, когда он перерисовывается, я получаю блэкфлеш - PullRequest
2 голосов
/ 11 апреля 2011

Я довольно плохо знаком с функциями рисования java, но у меня есть пример гистограммы, которую я строю. по нажатию кнопки у меня перестраивается гистограмма со случайными значениями. Однако каждый раз, когда я нажимаю кнопку, чтобы перекрасить, у меня появляется черная вспышка, прежде чем она перерисовывается. Я помню, что слышал, что это было довольно распространенным явлением, и исправление было связано с буферизацией. Любой совет?

Ответы [ 2 ]

4 голосов
/ 11 апреля 2011

Первое, что вы делаете, когда рисуете, очищаете свой холст.Вспышка, которую вы видите, - это пустой холст, когда все прорисовывается.Если бы вы замедлили его достаточно быстро, вы бы увидели каждую вещь, появляющуюся на экране, по одной за раз.

Вы можете обойти это с помощью так называемой двойной буферизации.

Вы рисуетеваш экран за кадром изображения.Затем вы рисуете свое изображение на экране все сразу.

2 голосов
/ 11 апреля 2011

По умолчанию Swing имеет двойную буферизацию.

Прочитайте раздел из учебника по Swing на Custom Painting для рабочих примеров.

...