Image img=getImage(new URL("");
Image img=getImage(new URL(""),"images/m1.gif");
表面看来,好象第一种调用格式较方便一些,但实际上第二种调用格式用得更普遍,因为这种格式更具灵活性 。原来,Applet类中提供了两个方法来帮助我们方便地获取基准URL对象 , 它们的调用格式如下:
URL getDocumentBase( )
URL getCodeBase( )
其中getDocumentBase( )方法返回的基准URL对象代表了包含该applet的HTML文件所处的目录,例如该文件贮存在“”中,则该方法就返回“”路径 。而getCodeBase( )方法返回的基准URL对象代表了该applet文件(.class文件)所处的目录 。它是根据HTML文件的"APPLET"标记中的CODEBASE属性值计算出来的,若该属性没有设置,则同样返回该HTML文件所处的目录 。
好了,现在我们应该可以感受到基准URL的灵活性了吧 。只要我们写下语句:
Image img = getImage(getDocumentBase( ),"images/m1.gif");
那么即使整个imgsample目录移到别处任何地方,也可以正确装载图像文件,而采用对于绝对URL形式则需要重新修改applet代码并重新编译 。
2. 图像文件的显示
getImage( )方法仅仅是将图像文件从网络上装载进来,交由Image对象管理 。那我们样把得到的Image对象中的图像显示在屏幕上呢?这又要回到我们的老朋友Graphics类来了,因为Graphics类提供了一个drawImage( )方法,它能完成将Image对象中的图像示在屏幕的特定位置上 , 就象显示文本一样方便 。drawImage( )方法的调用格式如下:
boolean drawImage(Image img, int x, int y, ImageObserver observer)
其中img参数就是要显示的Image对象 。x和y参数是该图像左上角的坐标值 。observer参数则是一个ImageObserver接口(interface),它用来跟踪图像文件装载是否已经完成的情况,通常我们都将该参数置为this,即传递本对象的引用去实现这个接口 。
除了将图像文件照原样输出以外,drawImage( )方法的另外一种调用格式还能指定图像显示的区域大?。?
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
这种格式比第一种格式多了两个参数width和height , 即表示图像显示的宽度和高度 。若实际图像的宽度和高度与这两个参数值不一样时,Java系统会自动将它进行缩放,以适合我们所定的矩形区域 。
有时,我们为了不使图像因缩放而变形失真,可以将原图的宽和高均按相同的比例进行缩小或放大 。那么怎样知道原图的大小呢?只需调用Image类中的两个方法就可以分别得到原图的宽度和高度 。它们的调用格式如下:
int getWidth(ImageObserver observer)
int getHeight(ImageObserver observer)
同drawImage( )方法一样,我们通常用this作为observer的参数值 。
下面的程序段给出了一个显示图像文件的例子,其显示结果如图4-14所示 。
import java.awt.Graphics;
import java.awt.Image;
public class Images extends java.applet.Applet{
Image img;
public void init(){
img=getImage(getCodeBase(),"man.gif");
}
public void paint(Graphics g){
int w=img.getWidth(this);
int h=img.getHeight(this);
g.drawImage(img,20,10,this); //原图
g.drawImage(img,200,10,w/2,h/2,this); //缩小一半
g.drawImage(img,20,200,w*2,h/3,this); //宽扁图
g.drawImage(img,350,10,w/2,h*2,this); //瘦高图
}
}
图4-14 显示图像文件
4.2.2 声音文件的播放
对声音媒体的直接支持可以说是Java的一大特色,尤其是在动画中配上声音效果,就可以使人在视觉上和听觉上均得到美的享受,那才叫过瘾 。Java中播放声音文件与显示图像文件一样方便 , 同样只需要先将声音文件装载进来,然后播放就行了 。
推荐阅读
- 双人动作解谜游戏,双人动作解谜游戏大全
- html中a标签的样式,html中a标签属性设置
- jqueryajax.request的简单介绍
- 微信直播交税要交多少钱,微信直播避税
- vb.net窗体 vbnet窗体数据如何交互
- chatgpt反向套话,反向atrp
- flutter放大透明,flutter 图片缩放
- 直播软件下载电子书,课堂直播电子书
- 调php用数据库的方法吗 php数据库编程