将图片加载在内存中

package frame;

import java.awt.Image;
import java.io.IOException;

import javax.imageio.ImageIO;

public  class ImageUtil {
    public Image getImage(String imageUrl){
        Image image = null;
        try {
            //会将图片加载在内存中
            image =  ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("image/"+imageUrl));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return image;
    }

}

 

package frame;

import java.awt.Graphics;
import java.awt.Image;

public class Hero {
    
    private ImageUtil iu = new ImageUtil();//加载图片的工具
    private Image heroImage;

    public Hero(){
        
        heroImage = iu.getImage("role1.gif");
        
    }
    
    public void draw(Graphics g){
        //g.drawImage(heroImage, 0, 0, 32, 32, 200, 200, 232, 232, this);
        //在屏幕上的左上角的X,Y和 屏幕上的右下角X,Y,之间,
        //图片的左上角X,Y,图片上右下角
        g.drawImage(heroImage, 200, 200, 232, 232,0,0,32,32, null);
    }
    
}
package frame;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JPanel;

public class GamePanel extends JPanel {
    
    /**
     * 
     */
    private static final long serialVersionUID = 6792476564904637059L;
    private Image backImage;    //背景图片
    private ImageUtil iu = new ImageUtil();//加载图片的工具
    private Hero hero = new Hero();
    //private Image heroImage;
    public GamePanel(){
        
        backImage = iu.getImage("back1.jpg"); //初始化背景图片
        //heroImage = iu.getImage("role1.gif"); //英雄的图片
    }
    @Override
    public void paint(Graphics g){
        System.out.println("aaa");
        g.drawImage(backImage, 0, 0, Color.BLACK, this);
        //画英雄,测试图片的截取
    
        
         hero.draw(g);//根椐面向对对象的思想,英雄的画法应该在英雄类中完成,不在纸上完成
    }

}

 

posted @ 2012-10-19 10:42  邹晟  阅读(488)  评论(0编辑  收藏  举报