您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > chapter09多媒体与图形学程序设计-JavaP
©2005赵小敏JavaProgramming第9章多媒体与图形学程序设计授课教师:赵小敏浙江工业大学软件学院zxm@zjut.edu.cnJava程序设计©2005赵小敏JavaProgramming第9章多媒体与图形学程序设计主要内容:一、声音播放二、图像显示三、图形处理四、动画处理©2005赵小敏JavaProgramming一、声音播放1、加载声音文件在Applet中播放声音十分简单,加载声音文件,然后调用play方法播放即可。Java提供了两种播放声音的方式:一种是通过Applet类的play方法,一种是通过AudioClip接口中的方法来播放。Applet的play方法可以将声音文件的加载与播放一并完成,其调用格式如下:voidplay(URLurl)voidplay(URLurl,Stringname)©2005赵小敏JavaProgramming加载声音文件其中URL是一个网络地址,网络地址若包含声音文件可采用第一种形式,否则采用第二种形式,播放本地计算机上的声音文件也可采用第二种形式。假设有一个MIDI声音文件trip.mid和Applet放在同一个目录下,采用如下调用格式即可播放:play(getCodeBase(),″trip.mid″);Applet的getAudioClip方法可创建这样的对象,该方法加载指定网络地址的声音文件,并返回一个AudioClip对象,调用格式如下:AudioClipgetAudioClip(URLurl)AudioClipgetAudioClip(URLurl,Stringname)©2005赵小敏JavaProgramming加载声音文件创建AudioClip对象后,声音文件即被加载,可调用它的方法处理声音文件。如果该方法没有找到指定的声音文件,将返回null值,此时不能引用所创建的对象。AudioClip只有3个方法:voidplay()播放一遍;voidloop()连续播放;voidstop()停止播放。©2005赵小敏JavaProgramming在Applet中播放声音本地计算机工作目录下有4个声音文件,代表了.au、.mid、.wav种声音格式,加载并播放这些声音文件。结果如下图所示:©2005赵小敏JavaProgramming例1程序源码:J_Audio.java1.importjava.applet.*;2.importjava.awt.*;3.importjava.awt.event.*;4.importjavax.swing.*;5.publicclassJ_AudioextendsJAppletimplementsActionListener,ItemListener{6.privateAudioClipm_soundFirst,m_soundSecond,m_soundThird,7.m_soundFourth,m_soundCurrent;8.privateJButtonm_buttonPlay,m_buttonLoop,m_buttonStop;9.privateJComboBoxm_comboChoose;10.publicvoidinit()//Buildinterfacesandsetsounds{11.Containercontainer=getContentPane();12.container.setLayout(newFlowLayout());12.Stringchoices[]={hi,bark,PINBALL,BATTVLOW};13.m_comboChoose=newJComboBox(choices);14.m_comboChoose.addItemListener(this);15.container.add(m_comboChoose);16.m_buttonPlay=newJButton(Play);17.m_buttonPlay.addActionListener(this);18.container.add(m_buttonPlay);19.m_buttonLoop=newJButton(Loop);20.m_buttonLoop.addActionListener(this);21.container.add(m_buttonLoop);22.m_buttonStop=newJButton(Stop);23.m_buttonStop.addActionListener(this);24.container.add(m_buttonStop);25.//loadsoundsandsetm_soundCurrent26.m_soundFirst=getAudioClip(getDocumentBase(),hi.au);27.m_soundSecond=getAudioClip(getDocumentBase(),bark.au);28.m_soundThird=getAudioClip(getDocumentBase(),PINBALL.MID);29.m_soundFourth=getAudioClip(getDocumentBase(),BATTVLOW.WAV);30.m_soundCurrent=m_soundFirst;31.}32.publicvoidstop(){//Stopplayingsound33.m_soundCurrent.stop();34.}35.publicvoiditemStateChanged(ItemEvente){36.m_soundCurrent.stop();37.switch(m_comboChoose.getSelectedIndex()){38.case0:m_soundCurrent=m_soundFirst;break;39.case1:m_soundCurrent=m_soundSecond;break;40.case2:m_soundCurrent=m_soundThird;break;41.case3:m_soundCurrent=m_soundFourth;break;42.default:m_soundCurrent=m_soundFirst;break;43.}44.}45.publicvoidactionPerformed(ActionEvente){46.if(e.getSource()==m_buttonPlay)47.m_soundCurrent.play();48.elseif(e.getSource()==m_buttonLoop)49.m_soundCurrent.loop();50.elseif(e.getSource()==m_buttonStop)51.m_soundCurrent.stop();52.}//Endofmethod:actionPerformed53.}©2005赵小敏JavaProgramming二、图像显示Java支持两种图像格式JPEG和GIF。JPEG称为联合图像专家组(jointphotographicexpertsgroup),可用浏览器打开。JPEG(或JPG)图像格式一般用来显示照片和具有连续色调的图像,它能保存图像所有颜色信息。JPEG是一种压缩的文件格式,在打开时自动解压缩。GIF称为图像交换格式(graphicinterchangeformat),可用浏览器打开。GIF图像是一种压缩文件格式,由于它能最大限度地减少文件转换时间,所以在HTML文件中常用于显示插图或图标。GIF格式能有效减少文件大小,有利于在Internet上使用,Java支持这种图像格式。©2005赵小敏JavaProgramming1、加载图像加载图像一般放在初始化方法init中进行。程序中的getImage方法可加载Java支持的图像文件,它有两个参数,一个是图像文件地址,一个是图像文件名称。由于Applet是面向网络的,因此图像文件的存储位置并不局限于本地计算机的磁盘目录,大部分情况是直接读取Web服务器上的图像文件。Java.applet.Applet的成员getImage方法返回一个Image对象,它的调用格式为:ImagegetImage(URLurl)ImagegetImage(URLurl,Stringname)©2005赵小敏JavaProgramming2、显示图像显示图像需要调用Graphics类的方法drawImage,它可以将Image对象关联的图像显示在Applet的指定位置。drawImage方法的调用格式如下:booleandrawImage(Imageimg,intx,inty,ImageObserverobserver)booleandrawImage(Imageimg,intx,inty,Colorbgcolor,ImageObserverobserver)©2005赵小敏JavaProgramming2、显示图像其中img就是要显示的图像、x和y是图像显示位置(x和y可取负值,表示一部分图像被移出了显示区)、bgcolor是图像显示区域的背景色、observer是图像加载跟踪器,通常将该参数指定为this,即由Applet负责跟踪图像的加载情况。这两种方法都是将图像照原样显示,能不能对图像进行缩放呢?使用下面两种调用格式就可以对图像进行缩放显示:booleandrawImage(Imageimg,intx,inty,intwidth,intheight,ImageObserverobserver)booleandrawImage(Imageimg,intx,inty,intw,inth,Colorc,ImageObserverobserver)©2005赵小敏JavaProgramming例2:显示图像1.importjava.awt.*;2.importjavax.swing.*;3.publicclassJ_ImageextendsJApplet{4.Imagem_image[]=newImage[2];5.publicvoidinit(){6.m_image[0]=getImage(getCodeBase(),ts1.gif);7.m_image[1]=getImage(getCodeBase(),ts2.gif);8.}//Endofmethod:init9.publicvoidpaint(Graphicsg){10.g.drawImage(m_image[0],0,0,150,150,this);11.g.drawImage(m_image[1],150,0,150,150,this);12.g.drawImage(m_image[0],0,150,300,150,this);13.}//Endofmethod:paint14.}//Endofclass:J_Image©2005赵小敏JavaProgramming运行结果©2005赵小敏JavaProgramming3、幻灯机效果如果Applet仅仅是显示一幅图像,没有什么特别的意义,不如直接在HTML文件中显示图像。Applet应该做HTML做不到的事情,例如像幻灯机那样连续显示图像。多幅图像的显示,如下图:©2005赵小敏JavaProgramming例3:多幅图像的显示1.importjava.awt.*;2.importjava.awt.event.*;3.importjava.applet.*;4.publicclassShowDoggyextendsApplet{5.intindex;6.Imageimgs[]=newImage[14];7.publicvoidinit(){8.addMouseListener(newMouseAdapter(){9.publicvoidmouseClicked(MouseEvente){10.index=++index%6;11.repaint();12.}1
本文标题:chapter09多媒体与图形学程序设计-JavaP
链接地址:https://www.777doc.com/doc-1468430 .html