gpt4 book ai didi

Java:带透明窗口的动画 GIF

转载 作者:搜寻专家 更新时间:2023-11-01 03:44:23 26 4
gpt4 key购买 nike

我正在尝试使用简单的 JLabel 在透明的 JDialog 上显示动画 gif:

JDialog dialog = new JDialog();
AWTUtilities.setWindowOpaque(dialog,false);

JLabel label = new JLabel();
ImageIcon ii = new ImageIcon("animation.gif");
label.setIcon(ii);

JPanel panel = new JPanel();
panel.setBackground(new Color(0,0,0,0));
panel.add(label);
dialog.add(panel);

dialog.setVisible(true);

这几乎行得通。它可以流畅地显示动画并且确实具有透明度。问题是所有的动画帧都被覆盖了,而不是在每个帧步骤都得到一个清晰的 Canvas 和当前帧。我假设 JLabel 的 Canvas 不会在每个重绘步骤中都被清除。有谁知道我该如何解决这个问题?

编辑:我想出了一个解决办法。我不得不覆盖 ImageIcon 的 paintIcon 函数并手动清除 Canvas :

class ClearImageIcon extends ImageIcon{
public ClearImageIcon(String filename){super(filename);}

@Override
public synchronized void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2 = (Graphics2D)g.create();
g2.setBackground(new Color(0,0,0,0));
g2.clearRect(0, 0, getIconWidth(), getIconHeight());
super.paintIcon(c, g2, x, y);
}
}

这会将每一帧都很好地绘制到屏幕上。

最佳答案

关于Java:带透明窗口的动画 GIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com