图形绘制图像渲染奇怪的方块

时间:2018-04-18 06:45:55

标签: java awt 2d

所以我用Java制作自己的游戏,是的,这是一件奇怪的事情。问题是我做了一个方法来返回一个加载了图像的BufferedImage:

    public static BufferedImage getImage(String img) {
    try {
        image = ImageIO.read(Game.class.getResourceAsStream("./img/" + img));
    } catch (IOException e) {
        e.printStackTrace();
    }
    image.flush();
    return image;

}

此方法正在为我的图标返回图像,没有任何问题。

        frame.setIconImage(Game.getImage("icon.png"));

问题是当我在画布上绘制图像时:

            g.drawImage(Game.getImage("aa.png"), 0, 0,Game.WIDTH, Game.HEIGHT,null);

显示这个: Error

实际图片是: Image

有人能帮助我吗?

我应该说它适用于Windows但不适用于GNU / Linux

2 个答案:

答案 0 :(得分:0)

拍摄你的照片,放在这个类下面的子目录/包中(在img包中)对我来说很合适

Layout

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {

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

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.add(new MenuPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public static class Game {
        public static BufferedImage getImage(String named) throws IOException {
            return ImageIO.read(Game.class.getResource("img/" + named));
        }
    }

    public class MenuPane extends JPanel {

        private BufferedImage background;

        public MenuPane() {
            try {
                background = Game.getImage("aa.jpg");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

        @Override
        public Dimension getPreferredSize() {
            return background == null ? new Dimension(200, 200) : new Dimension(background.getWidth(), background.getHeight());
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(background, 0, 0, this);
        }

    }

}

我注意到了什么?我下载时aajpg,但在您的代码中被命名为png,可能不是问题,但是不同。

如果没有Runnable example,几乎不可能知道还有什么建议

答案 1 :(得分:0)

我终于发现这是一个硬件问题。我回到家并在同一个硬盘上的VM +上进行了测试。它工作正常,抱歉花时间回答。

相关问题