- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 多媒体应用new.ppt
* * 第4章 多媒体应用 Web图片切换 Applet程序 MyJavaApplet.java AppletInclude.html 图片切换显示 程序案例 Thread.sleep 2*1000 ; —— 调用java.lang包中的Thread类中的sleep方法休眠2秒 import java.applet.*; import java.awt.*; public class MyJavaApplet extends Applet MediaTracker mt; Image myImages[]; int n 3;//图片总数 int i 0;//当前要显示的图片号 public void init mt new MediaTracker this ; myImages new Image[n]; for int i 0;i n;i++ myImages[i] getImage getCodeBase ,t+i+.jpg ; mt.addImage myImages[i],i ; try mt.waitForID i ; catch Exception e play getCodeBase ,萍聚.mid ; public void paint Graphics g g.drawImage myImages[i],0,0,300,200,this ; i ++i%n; try Thread.sleep 2*1000 ; catch Exception e repaint ; 代码 水中倒影动画 程序案例 Applet程序 MyJavaApplet.java 总体方案 Applet程序 MyJavaApplet.java AppletInclude.html 图像宽、高为495、195 Applet区域宽、高为495、390 采用双缓冲技术: 先在图像缓冲区中处理图像,然后再显示到窗体上。 缓冲区宽、高为990、195 在缓冲区的左半部显示图像; 在缓冲区的右半部绘制倒影。 在缓冲区的左半部制作动画帧。 在窗体上显示图像和动画帧 绘制倒影 采用逐线移动的方法。 制作动画帧 设计12个动画帧,帧号存于num。 水波为正弦波,不同的帧相位角不同,angle num*2*л/12 采用逐线移动的方法绘制动画帧。 帧中的图像线偏离静止时的位置,设向上偏移wave。 wave的计算公式源自计算机图形学: 其中h为图像高,i为线号。 import java.awt.*; import java.applet.*; public class MyJavaApplet extends Applet Image img;//图像 Image imgBuff;//图像缓冲区 Graphics ibg;//缓冲区画笔 int w,h;//图像宽高 int num 0;//帧号 double angle;//相位角 int wave;//偏移量 public void init //加载图像、追踪、获取图像宽高 //创建缓冲区及其画笔 //在缓冲区的左半部显示图像 //在缓冲区的右半部绘制倒影 public void paint Graphics g //在缓冲区的左半部绘制动画帧 //产生下一帧的帧号 //在Applet窗体上部显示图像 //在Applet窗体下部显示动画帧 //休眠50毫秒 repaint ; public void update Graphics g paint g ; 使用update方法的目的:使repaint方法不清屏,直接调用paint。 程序代码 区域复制方法 copyArea x,y,w,h,dx,dy : 将由 x,y,w,h 确定的区域,复制型向右移动dx,向下移动dy。 img getImage getCodeBase ,t1.jpg ;//加载图像 MediaTracker imgTrace new MediaTracker this ;//声明和创建图像追踪器 imgTrace.addImage img,0 ;//将加载的图像添加到图像追踪器中 try imgTrace.waitForID 0 ;//使用图像追踪器监视图像的加载过程 catch Exception e w img.getWidth this ;//获取图像宽 h img.getHeight this ;//获取图像高 imgBuff createImage 2*w,h ;//创建缓冲区 ibg imgBuff.getGraphics ;//创建缓冲区画笔 ibg.drawImage img,0,0,this ;//在缓冲区左半部显示图像 //用逐线移动的方法,在缓冲区的右半部绘制倒影,i是
文档评论(0)