繁体   English   中英

在Java Swing中淡化一部分Graphics

[英]Fading a portion of Graphics in Java Swing

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

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

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

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

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

祝好运!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM