|
Hello, I am seeing some ‘distortion’ when painting in a
transparent panel. What I have: ========= I have an opaque JPanel that displays a buffered image. The image can
be zoomed and panned using the AffineTransform. I have another transparent JPanel which is added to the parent JPanel
mentioned above. It also overrides paintComponent(g)
and draws some strings on top of the BufferedImage in the parent panel. Because
the child panel is transparent, the parent’s BufferedImage ‘shows
through’ beneath the Strings. The transparent child covers about 20% of
its parent and is positioned along the right hand border of the parent panel. The transparent panel is not always visible. When mousing into a
certain area of the parent panel, it is set visible and then it draws some info
Strings on top of the parent. When mousing out of the ‘trigger’
area, setVisible(false) is called on the transparent
child. What I see: I *occasionally* get a “lens”
effect when “looking through the transparent child” at the BufferedImage
below. That is, depending on the scale and translation values of the parent,
there appears to be a tiny shift in the image of perhaps one-pixel. For example, if I mouse in and out of the area that activates the
transparent child, the underlying image is sometimes seen directly on the
parent panel and sometimes viewed through the transparent child. As the state
changes, I see the shift mentioned above. Changing the zoom and pan by only a small amount will often cause this “lens”
effect to disappear. Then changing them again by a small amount will cause the
effect to reappear. That is, at certain scale and translation values, I never see the lens
effect, at others I do. What I’m wondering: Could this be caused by some kind of pixel round-off calculation in the
child? (Perhaps my child panel is
not aligned with its parent on a pixel boundary?) If so, is there some way to
prevent this? My code base is very large, so unfortunately I can’t post a
working example of this. Thank you for your help, |
- [JAVA2D] Painting in Transparent Panel Ted Hill
