首页 > 解决方案 > 带有透明背景的gif问题

问题描述

我在用透明背景显示我的 gif 时遇到问题,因为当我启动这个程序时,我的 gif 会显示,但 gif 的所有图片都保留在画布上。请问有人知道解决方案吗?

在此处输入图像描述 在此处输入图像描述

这是我的代码:

package zkouska3;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class mainl extends JFrame{
    private Image TestImage;

    private BufferedImage bf;

    public static void main(String[] args) {
        new mainl();
    }

    public mainl() {
        setSize(500, 500);
        imageLoader();
        setVisible(true);
    }
    public void imageLoader() {
        try {
            TestImage = new ImageIcon(this.getClass().getResource("pandulak.gif")).getImage();
        }catch(Exception e) {

        }
    }
    @Override
    public void paint(Graphics g){
         g.drawImage(TestImage, 0, 0, 300, 300, this);
}

}

标签: javagraphicsawtgiftransparent

解决方案


您已经覆盖paintJFrame. 这意味着它JFrame本身不再被绘制(或者更简单地说,图像的背景永远不会被绘制)。super.paint(g)在上面绘制图像的方法中插入对的调用paint,以便每次显示新的 gif 图像时,背景都被绘制在前一个 gif 图像上:

@Override
public void paint(Graphics g) {
    super.paint(g);
    g.drawImage(TestImage, 0, 0, 300, 300, this);
}

推荐阅读