java - 带有透明背景的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);
}
}
解决方案
您已经覆盖paint
了JFrame
. 这意味着它JFrame
本身不再被绘制(或者更简单地说,图像的背景永远不会被绘制)。super.paint(g)
在上面绘制图像的方法中插入对的调用paint
,以便每次显示新的 gif 图像时,背景都被绘制在前一个 gif 图像上:
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(TestImage, 0, 0, 300, 300, this);
}
推荐阅读
- java - 如何将数据从 PhoneStateListener 子类发送到活动?
- angular - Angular - 如何使用过滤器实现 TreeView 表
- ios - ARKit 电平测量
- copy - 清除数据而不是删除行
- gps - 使用haversine公式计算2个lat-lngs之间的距离时的假设?
- amazon-web-services - 最佳方式:从 VPC 到 WWW 的 talend 接口
- python - Python:管理具有公共属性的多个类(来自序列化)
- android - 如何在 Linux mint 中更新 Android Studio?错误:Studio 没有对 /app/extra 的写入权限。请由特权用户运行以更新
- c# - Automapper 通过继承展平对象
- reactjs - 模拟传递给子组件的道具