java - .getScaledInstance 使用动画 GIF

标签 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 的大小,或者是否有一个简单的解决方案可以解决此问题。

最佳答案

我在进入 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);

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

关于java - .getScaledInstance 使用动画 GIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842928/

相关文章:

java - JColorChooser:隐藏所有默认面板并仅显示 HSB 面板

java - Lwjgl 小程序加载器崩溃,RuntimeExceptoin : java. lang.Reflect.InitationException

java - 将类类型传递给方法,然后转换为该类型?

java -\n 和 System.lineSeparator(); 之间的区别?

java - 为什么要将 getter 和 setter 方法声明为私有(private)?

java - 将 JPanel 添加到 JFrame 中

java - JFrame - 在 GridLayout 中设置行和列

java - Android 清除中间 Activity

java - 在 Java Web Start 中运行时,Swing Timer 不会停止触发事件

java - 如何关闭 JFrame 对话框?