`
xuanzhangyang
  • 浏览: 5183 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java中BufferedImage的作用

阅读更多

        许多人在制作窗体背景时,就只是获取窗体的画布g,然后就开始调用画布的drawImage()方法画上背景,其实这在画静态背景时是可以用的,但在画动态背景时是不可取的,那么应该怎么做呢,这里先贴上代码再说明

//创建一个图片缓冲区,先将图片画到缓冲区上
BufferedImage imageBuffer =
 new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);

ImageIcon icon = new ImageIcon("images/1.jpg");
//图片缓冲区的画布
Graphics gg = imageBuffer.getGraphics();
		
gg.drawImage(icon.getImage(),0,0,icon.getIconWidth(),icon.getIconHeight(),0,0,icon.getIconWidth(),icon.getIconHeight(),null);
		
//将图片缓冲区中的图片画到窗体上,方能显示出来
g.drawImage(imageBuffer,0, 0, null);

      先讲一下这段代码所用到的思想:

     创建一个BufferedImage,BufferedImage是一个图片缓冲区,在这里你可以将它看作一个自由的画布,先往这个自由的画布上画上你想画的东西,然后再将这个自由的画布当作一幅画,整个画到窗体上。那么这种思想有什么好处呢?答案应该是显而易见的,当你经常改变要画的东西时,只在图片缓冲区中该变即可,将所有的该变完成后再显视到窗体上,这样窗体上的动画就不会因为一步一步刷新而闪烁了,这种用中间量的方法是编程中很重要的一种思想。

     下面简介一下画布的drawImage方法的一个用法:

<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:18:02 CST 2007 -->

<noscript></noscript>
public abstract boolean drawImage(Image img,
                                  int dx1,
                                  int dy1,
                                  int dx2,
                                  int dy2,
                                  int sx1,
                                  int sy1,
                                  int sx2,
                                  int sy2,
                                  ImageObserver observer)
绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。透明像素不影响该处已存在的像素。
参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。
dx1 - 目标矩形第一个角的 x 坐标。
dy1 - 目标矩形第一个角的 y 坐标。
dx2 - 目标矩形第二个角的 x 坐标。
dy2 - 目标矩形第二个角的 y 坐标。
sx1 - 源矩形第一个角的 x 坐标。
sy1 - 源矩形第一个角的 y 坐标。
sx2 - 源矩形第二个角的 x 坐标。
sy2 - 源矩形第二个角的 y 坐标。
observer - 当缩放并转换了更多图像时要通知的对象。

API上讲的这些也不一定能看的懂,其实这个方法就是将一个矩形{(dx1,dy1),(dx2,dy2)}缩小或放大到{(sx1,sy1),(sx2,sy2)}这么大。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics