Проблемы с двойным буфером Java Swing - PullRequest
0 голосов
/ 11 февраля 2012

При переопределении метода paintComponent компонента Swing, когда графический объект НЕ рисует по всей поверхности компонента (например, просто g2.rotate (0.3) покажет вам как окрашенные, так и неокрашенные части) неокрашенные части компонента заполняются цветами мусора из изображения заднего буфера.

Если я отключаю двойную буферизацию из RepaintManager, мусор не появляется, а неокрашенные части отображаются прозрачными, но все выглядит как дерьмо из-за перерисовки и отсутствия буферизации.

Даже если я использую объект g2 в paintComponent, чтобы установить альфа на 50%, я по-прежнему вижу буферизованный мусор через прозрачность.

Я пытался отключить двойную буферизацию на одном компоненте, но там тоже нет кубиков.

Эта проблема задокументирована в других местах, например здесь: http://www.java.net/node/689238

... но, похоже, нет способа исправить это повреждение буфера ... У кого-нибудь есть идеи?

Кроме того, в системе Windows смена темы на «Классическая» решит эту проблему ... Может быть, это проблема ОС?

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Вы делали setOpaque(false)?

0 голосов
/ 14 февраля 2012

Это, похоже, проблема, связанная с темами Windows Aero и тем, как Windows обрабатывает свои прозрачные пленкиКлассические или базовые темы (или не-Windows OS) исправляют это.Спасибо за помощь.

-Paul

...