科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Java Applet编程显示图像(2)

Java Applet编程显示图像(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java Applet装载GIF图像非常简单,在Applet内使用图像文件时需定义Image对象。多数Java Applet使用的是GIF或JPEG格式的图像文件。Applet使用getImage方法把图像文件和Image对象联系起来。

作者:天极网 来源:天极网 2007年9月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

双缓冲图像

为了提高图像的显示效果应采用双缓冲技术。首先把图像装入内存,然后再显示在Applet窗口中。

使用双缓冲图像技术例子(BackgroundImage.java)

//源程序清单

import java.awt.*;

import java. applet.*;

public class BackgroundImage extends Applet //继承Applet

{

  Image picture;

  Boolean ImageLoaded=false;

  public void init()

  {

picture=getImage(getCodeBase(),"Image.gif"); //装载图像

Image offScreenImage=createImage(size().width,size().height);

//用方法createImage创建Image对象

Graphics offScreenGC=offScreenImage.getGraphics(); //获取Graphics对象

offScreenGC.drawImage(picture,0,0,this); //显示非屏幕图像

  }

  public void paint(Graphics g)

  {

if(ImageLoaded)

{

  g.drawImage(picture,0,0,null); //显示图像,第四参数为null,不是this

  showStatus("Done");

}

else

  showStatus("Loading image");

  }

  public boolean imageUpdate(Image img,int infoflags,int x,int y,int w,int h)

  {

if(infoflags= =ALLBITS)

{

  imageLoaded=true;

  repaint();

  return false;

}

else

  reture true;

  }

}


分析该Applet的init方法可知,该方法首先定义了一个名为offScreenImage的Image对象并赋予其createImage方法的返回值,然后创建了一个名为offScreenGC的Graphics对象并赋予其图形环境——非屏幕图像将由它来产生。因为这里画的是非屏幕图像,所以Applet窗口不会有图像显示。

每当Applet调用drawImage方法时,drawImage将创建一个调用imageUpdate方法的线程。Applet可以在imageUpdate方法里测定图像已有装入内存多少。drawImage创建的线程不断调用imageUpdate方法,直到该方法返回false为止。

imageUpdate方法的第二个参数infoflags使Applet能够知道图像装入内存的情况。该参数等于ImageLoaded设置为true并调用repaint方法重画Applet窗口。该方法最终返回false,防止drawImage的执行线程再次调用imageUpdate方法。

该Applet在paint方法里的操作是由ImageLoaded变量控制的。当该变量变为true时,paint方法便调用drawImage方法显示出图像。paint方法调用drawImage方法时把null作为第四参数,这样可防止drawImage调用imageUpdate方法。因为这时图像已装入内存,所以图像在Applet窗口的显示可一气呵成。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章