BufferedImage是Image的一个子类, BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或不透明等。
Image是一个抽象列,BufferedImage是Image的实现。Image和BufferedImage的主要作用就是将一副图片加载到内存中。
Java将一副图片加载到内存中的方法是:
String imgPath = "C://demo.jpg";
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
可以用该方法可以获得图片的详细信息,例如:
获得图片的宽度:image.getWidth(null);图片只有加载内存中才能对图片进行进一步的处理。
接下来画出加载过的图片
当我们要在哪里绘图时,就先获得该对象的Graphics对象的引用,然后调用drawImage的方法。对于BuffereImage对象也是一样的。先在BuffereImage对象中绘图,然后将BuffereImage对象绘制到Frame中。这样就实现了双缓冲。
在paint方法中具体实现如下:
public void paint(Graphics g) {
super.paint(g);
bi = new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_INT_ARGB);
Graphics bg = bi.getGraphics(); //在这里获得了bi的Graphics的引用
bg.drawImage(要显示的图片,.....);//调用bg的drawImage方法。
if (fi) {
g = img.getGraphics();
g.drawImage(bi, 50, 50, 40, 40, this);
}
}