当覆盖Swing组件的paintComponent方法并且让图形对象不在组件的整个表面上绘制时(例如,只有g2.rotate(0.3)将显示绘制和未绘制的部分) ,组件的未涂漆部分正从后缓冲区图像填充垃圾颜色。
如果我从RepaintManager禁用双缓冲,则不会出现垃圾,并且未绘制的部分显示为透明,但由于所有重新绘制和无缓冲,所有内容看起来都像废话。
即使我使用paintComponent中的g2对象将alpha设置为50%,我仍然可以通过透明度看到缓冲的垃圾。
我已尝试在单个组件上禁用双缓冲,但也没有骰子。
此问题记录在其他地方,例如:http://www.java.net/node/689238
...但似乎没有办法纠正这种缓冲区损坏......任何人都有任何想法?
此外,在Windows系统上,将主题更改为“经典”将解决此问题...可能是操作系统问题?
谢谢!
答案 0 :(得分:1)
你做过setOpaque(false)
吗?
答案 1 :(得分:0)
这似乎与Windows Aero主题相关,以及Windows如何处理自己的透明胶片。经典或基本主题(或非Windows操作系统)纠正了这一点。谢谢你的帮助。
-Paul