Java Applet编程显示图像

穷小子shijing

穷小子shijing

2016-02-19 11:59

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享Java Applet编程显示图像吧。
[文章导读] Java Applet常用来显示存储在GIF文件中的图像
Java Applet常用来显示存储在GIF文件中的图像。Java Applet装载GIF图像非常简单,在Applet内使用图像文件时需定义Image对象。多数Java Applet使用的是GIF或JPEG格式的图像文件。Applet使用getImage方法把图像文件和Image对象联系起来。



Graphics类的drawImage方法用来显示Image对象。为了提高图像的显示效果,许多Applet都采用双缓冲技术:首先把图像装入内存,然后再显示在屏幕上。

Applet可通过imageUpdate方法测定一幅图像已经装了多少在内存中。

装载一幅图像

Java把图像也当做Image对象处理,所以装载图像时需首先定义Image对象,格式如下所示:

Image picture;
然后用getImage方法把Image对象和图像文件联系起来:

picture=getImage(getCodeBase(),"ImageFileName.GIF");
getImage方法有两个参数。第一个参数是对getCodeBase方法的调用,该方法返回Applet的URL地址,如www.sun.com/Applet。第二个参数指定从URL装入的图像文件名。如果图文件位于Applet之下的某个子目录,文件名中则应包括相应的目录路径。

用getImage方法把图像装入后,Applet便可用Graphics类的drawImage方法显示图像,形式如下所示:

g.drawImage(Picture,x,y,this);
该drayImage方法的参数指明了待显示的图像、图像左上角的x坐标和y坐标以及this。

第四个参数的目的是指定一个实现ImageObServer接口的对象,即定义了imageUpdate方法的对象(该方法随后讨论)。

显示图像(ShowImage.java)

//源程序清单
import java.awt.*;
import java.applet.*;
public class ShowImage extends Applet
Image picure; //定义类型为Image的成员变量
public void init()
{
picture=getImage(getCodeBase(),"Image.gif"); //装载图像
}
public void paint(Graphics g)
{
g.drawImage(picture,0,0,this); //显示图像
}
}

为此,HTML文件中有关Applet的语句如下:

<HTML>
<TITLE>Show Image Applet</TITLE>
<APPLET
CODE="ShowImage.class" //class文件名为ShowImage.class
WIDTH=600
HEIGHT=400>
</APPLET>
</HTML>

编译之后运行该Applet时,图像不是一气呵成的。这是因为程序不是drawImage方法返回之前把图像完整地装入并显示的。与此相反,drawImage方法创建了一个线程,该线程与Applet的原有执行线程并发执行,它一边装入一边显示,从而产生了这种不连续现象。为了提高显示效果。许多Applet都采用图像双缓冲技术,即先把图像完整地装入内存然后再显示在屏幕上,这样可使图像的显示一气呵成。
双缓冲图像

为了提高图像的显示效果应采用双缓冲技术。首先把图像装入内存,然后再显示在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窗口的显示可一气呵成。
展开更多 50%)
分享

猜你喜欢

Java Applet编程显示图像

编程语言 网络编程
Java Applet编程显示图像

Java Applet编程小技巧之文字显示

编程语言 网络编程
Java Applet编程小技巧之文字显示

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java Applet编程响应鼠标键盘

编程语言 网络编程
Java Applet编程响应鼠标键盘

Java编程图像处理技巧

编程语言 网络编程
Java编程图像处理技巧

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java Applet实现声音和图像的协调

编程语言 网络编程
Java Applet实现声音和图像的协调

Applet编程技巧

编程语言 网络编程
Applet编程技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Java手机软件图形界面API之Form相关API

Java手机软件图形界面API之Form相关API

获取页面高度窗口高度滚动条高度等参数值getPageSize,getPageScroll

获取页面高度窗口高度滚动条高度等参数值getPageSize,getPageScroll
下拉加载更多内容 ↓