【发布时间】:2014-11-22 12:24:42
【问题描述】:
我正在尝试在 JFrame 上绘制动画 gif 图像。目前,我就是这样做的:
public class JImageComponent extends JComponent {
private static final long serialVersionUID = -6926323540532721196L;
private final Image image;
public JImageComponent(Image image) {
this.image = image;
}
public JImageComponent(byte[] data) {
this(Toolkit.getDefaultToolkit().createImage(data));
}
@Override
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
final int centerX = getWidth() / 2 - image.getWidth(this) / 2;
final int centerY = getHeight() / 2 - image.getHeight(this) / 2;
graphics.drawImage(image, centerX, centerY, this);
}
}
这很好,但是(因为边缘有阴影)如果我设置了背景颜色,它会显示出令人讨厌的白色边缘。我想我知道是什么原因造成的,这是因为 Image 类没有使用 alpha 通道。我不知道如何使图像使用 32 位颜色模型,使用 8 个最高有效位作为 alpha 值。任何帮助表示赞赏!谢谢。
编辑:当我尝试使用 ImageIO 和 BufferedImage 时,它没有动画。显然这是因为它没有更新 ImageObserver
编辑:这是有背景时图像的样子:http://puu.sh/bQ5sZ.png 我不想要那个白边,它应该看起来像这样:http://puu.sh/bQ5Ya.png。就像我之前说的,我知道为什么会这样;我需要 Image 类来使用 RGBA 而不是 RBG。
【问题讨论】:
-
请编辑您的问题以包含一个 complete example 来展示您描述的问题。在你的complete example中,通过
URL访问图片,如图here -
我添加了更多关于我的意思的信息。我想我只需要让它使用 RGBA 而不是 RGB,但我认为这是不可能的......
标签: java image swing gif animated-gif