.getScaledInstance使用动画GIF

时间:2016-10-04 01:35:44

标签: java swing jframe gif animated-gif

我在导入时可以使用.getScaledInstance轻松缩放图像:

player_sprite = a_1.getImage().getScaledInstance(150, 150, 100);

但是关于缩放动画GIF的情况也是如此,因为当我使用相同的缩放GIF方法时,它会在显示时引起问题。使用g.drawImage时,它只绘制第一帧然后消失。

以下是导入我使用的GIF的完整代码,以下是我在JFrame上显示动画GIF的示例:

导入它:

    ImageIcon a_1 = new ImageIcon(FrontHand.class.getResource("/Sprites/character_move_down.gif"));
    move_player_down = a_1.getImage().getScaledInstance(100, 100, 100);

显示它:

    g.drawImage(move_player_down, 100, 100, this);

我是否可以使用另一种简单的方法来增加动画GIF的大小,或者是否有针对此问题的简单修复。

1 个答案:

答案 0 :(得分:1)

我在scalr中找到了一个解决方案,我没有用scalr结束,而是在一个scalr线程上发现了一条注释,使用.getscaledinstance改变大小然后用paintIcon打印而不是像这样打印drawImage:

尺寸变化:

ImageIcon a_1 = new ImageIcon(FrontHand.class.getResource("/Sprites/character_move_down.gif"));
a_1.setImage(a_1.getImage().getScaledInstance(150, 150, Image.SCALE_DEFAULT));
move_player_down = a_1;

绘制图标:

move_player_down.paintIcon(this, g, 100, 100);

它就像一个魅力,并不需要我改变我以前的所有代码来解决它:)