1

我正在尝试在摇摆中实现淡入/淡出动画。我正在使用其中没有任何组件的 JPanel。它完全由paintComponent() 方法绘制。

现在在这个 JPanel 的一部分中,我想实现淡入/淡出动画。当我尝试使用 AlphaComposite 时,整个 JPanel 都会触发动画。

我可以将此动画限制在该面板中的一个小剪辑区域中吗?

Graphics2D g2d = (Graphics2D) g;
    g2d.setComposite(AlphaComposite.getInstance(
            AlphaComposite.XOR, alpha));
4

3 回答 3

1

您可以在绘画之前使用 setClip() 来限制淡入淡出区域。假设你想要一个小的渐变矩形。使用区域类创建 2 个形状。原始剪辑与渐变矩形的交集和减法(从原始剪辑中减去渐变矩形)。

使用 2 个不同的剪辑调用 super.paintComponent() 两次。对于第二个油漆,您可以设置您的 alpha 过滤器。

于 2012-05-04T05:41:35.283 回答
1

也许吧,但这可能比它的价值更难实现。创建一个JComponent您想要动画(或淡出)的大小,将其添加到您的JPanel,并在动画期间在较小的组件上调用 repaint() 而不是较大的JPanel.

于 2012-05-03T14:05:07.260 回答
1

您是否尝试过使用图形对象(如矩形、圆形等)进行淡入/淡出?这样,整个面板就不会被触发。

祝你好运!

于 2012-05-03T13:55:21.380 回答