如何使用Java加载和绘制图像?编程位图图形

时间:2014-10-04 20:07:07

标签: java bitmap

我正在读一本关于java游戏编程的书,我被困在这里。这本书名为" Beginning Java SE 6 Game Programming,Third Edition"作者:Jonathan S,Harbour。我需要在代码的这个特定部分提供帮助,其中加载位图图像并加载它。我得到的只是黑屏。我不清楚它在哪里说字符串文件名和.getResource(文件名)。我还在学习。

我在这里得到了一座城堡的形象,http://www.reinerstilesets.de/2d-grafiken/2d-buildings/

及其具体http://www.reinerstilesets.de/thumbs_t/ts%20062.jpg

请帮助,谢谢。如果你能解释一下,我真的想学习它。

继承代码,

//DrawImage program
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.net.*;

public class DrawImage extends JFrame {
private Image image;

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

public DrawImage() {
    super("DrawImage");
    setSize(600,600);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Toolkit tk = Toolkit.getDefaultToolkit();
    image = tk.getImage(getURL("castle.png"));
}

private URL getURL(String filename){
    URL url = null;
    try{
        url = this.getClass().getResource(filename);
    }
    catch (Exception e){}
    return url;
}

public void paint(Graphics g) {
    //create an instance of Graphics2D
    Graphics2D g2d = (Graphics2D) g;

    //fill the background with black
    g2d.setColor(Color.BLACK);
    g2d.fillRect(0, 0, getSize().width, getSize().height);      

    //draw the image
    g2d.drawImage(image, 0, 40, this);
}
}

1 个答案:

答案 0 :(得分:0)

在JFrame中放置和映像的最简单方法就是将其包装在JLabel中:

public class MyImage{

    public BufferedImage img;

    public MyImage(String path){
        try {
            img = ImageIO.read(new File(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args){

        JFrame window = new JFrame();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(30, 30, 300, 300);
        window.setVisible(true);
        window.setSize(600, 400);

        MyImage i = new MyImage("YOUR IMG PATH");
        JPanel panel = new JPanel();
        JLabel label = new JLabel():
        label.setIcon(new ImageIcon(i.img));
        panel.add(label);
        window.add(panel);             
    }
}