练习86 动的图片.doc

练习86 动的图片.doc

ID:55593280

大小:48.00 KB

页数:8页

时间:2020-05-19

练习86 动的图片.doc_第1页
练习86 动的图片.doc_第2页
练习86 动的图片.doc_第3页
练习86 动的图片.doc_第4页
练习86 动的图片.doc_第5页
资源描述:

《练习86 动的图片.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、练习86波动的图片本例知识点一句话讲解新学知识使用Image类通过该类导入图片使用Thread类管理线程已学知识使用Graphics类管理屏幕显示使用Color类设置背景色一、练习具体要求本例制作波动的图片,运行效果如图86-1所示。执行本例实例后,将创建一幅动态的图片,程序的显示效果是使图片像水一样的抖动。本实例的知识点有:Image类,Graphics类,Thread类的应用。二、程序及注释(1)编程思路:本例因为要制作波动的图片,所以首先要进行原始图片的装载,这是在init()函数中完成的。在函数init()内部,利用getImage(getDocumentBase(),getPara

2、meter("image"))方法返回Image类的一个对象,随后对原始图片进行一些初始化的操作。然后,因为要让图片产生波动效果,所以应对图片进行实时更新。这是通过imageUpdate()函数完成的,该函数返回一个布尔型的变量。在该函数内部,通过一系列坐标的判断来给相对应的布尔值赋值。变量flag是函数最后的返回值,同时保证了图片更新的连续性。最后,因为要制作波动的图片,所以要对图片进行分解计算,这项功能是通过函数rotateImage(Graphicsg)来完成的。rotateImage(Graphicsg)函数内部调用了两个方法:shearX(g)负责对图片水平方向进行旋转;shear

3、Y(g)负责对图片竖直方向进行旋转。最后在createIt()函数中生成了新的图片,通过paint(Graphicsg)函数显示在窗口中。(2)程序实现及注释://ripple.javaimportjava.applet.Applet;importjava.awt.*;importjava.awt.image.ImageObserver;importjava.io.PrintStream;publicclassrippleextendsAppletimplementsRunnable{ImageorigImg;ImagebackImg;ImagefinImg;intw1;inth1;Grap

4、hicsbackG;GraphicsfinG;intphase;Threadnick;intframeNo;intframes;intperiod;booleanstopIt;booleanborderGap;booleanimLoaded;//程序的初始化和原始图片的导入publicvoidinit(){setBackground(Color.white);origImg=getImage(getDocumentBase(),getParameter("image"));borderGap="on".equals(getParameter("bordergap"));w1=origImg.

5、getWidth(this);h1=origImg.getHeight(this);if(h1>0&&w1>0)stopIt=false;period=Integer.parseInt(getParameter("period"));frames=Integer.parseInt(getParameter("frames"));}publicvoidstart(){if(nick==null){nick=newThread(this);nick.start();}}publicvoidstop(){if(nick!=null){//nick.stop();nick=null;}}//对图片进

6、行更新publicbooleanimageUpdate(Imageimage,inti,intj,intk,intl,inti1){booleanflag=true;if((i&0x2)>0)h1=i1;if((i&0x1)>0)w1=l;if((i&0x20)>0)imLoaded=true;if(imLoaded&&w1>0&&h1>0){stopIt=false;flag=false;}returnflag;}//对图片进行旋转publicvoidrotateImage(Graphicsg){shearX(g);shearY(g);}//对图片水平方向进行旋转publicvoidshe

7、arX(Graphicsg){for(inti=0;i>1)*Math.sin((double)i/(double)period+(6.2831853071795862D*(double)phase)/(double)frames);g.copyArea(0,i,w1,1,(int)d,0);if(borderGap){g.drawLine((

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。