为什么graphics.clearRect会改变它的行为?

时间:2014-08-14 12:12:22

标签: image swing

我正在制作类似照片查看器的picasa以及后来的图像编辑器。我使用JFrame和alpha通道设置背景透明。但是在移动或放大/缩小时,因为我必须在不同的位置绘制它并清除我使用clearRect的前一张图片并遇到问题。

oracle documentation 表示它会清除矩形并恢复背景颜色。

在某些试验中,clearRect将区域清除为背景颜色。但是当鼠标拖动时连续事件将清除区域的颜色变为黑色并导致此情况:

 `

日Thnx

1 个答案:

答案 0 :(得分:0)

  

.i使用JFrame和alpha通道设置背景透明。

不要使用alpha来实现完全透明。而只是使用:

panel.setOpaque( false );

如果您使用的是半透明度,请查看Backgrounds With Transparency。它将解释透明背景的问题并提供一些解决方案。

基本问题是透明度会破坏与Swing组件的绘画合约,因为在绘制子组件之前不会完全清除背景。