《Java基础教程第3版第12章图形图像与音频ppt课件》由会员分享,可在线阅读,更多相关《Java基础教程第3版第12章图形图像与音频ppt课件(15页珍藏版)》请在金锄头文库上搜索。
1、采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物注意:开始用功了注意:开始用功了!第 1 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物Java 基础教程(第基础教程(第3版)版) 第第12章章配合例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平图形、图像与音频图形、图像与音频 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,
2、保持熔接部位干净无污物主要内容主要内容采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物概述概述 ComponentComponent类类有有一一个个方方法法public void paint(Graphics g),程程序可以在其子类中重写这个方法。序可以在其子类中重写这个方法。 当当程程序序运运行行时时,javajava运运行行环环境境会会用用Graphicd2DGraphicd2D(GraphicsGraphics的的一一个个子子类类)将将参参数数g g实实例例化化,对对象象g g就就可可以以在在重重写写
3、paintpaint方方法法的的组组件件上内绘制图形、图像等上内绘制图形、图像等 . .Graphics2DGraphics2D的的“画画笔笔”分分别别使使用用draw和和fill方方法法来来绘绘制制和和填填充充一个图形。一个图形。组组件件都都是是矩矩形形形形状状,组组件件本本身身有有一一个个默默认认的的坐坐标标系系,组组件件的的左左上角的坐标值是上角的坐标值是(0,0)。第 4 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.1 绘制基本图形绘制基本图形-1 1直线直线 使用java.awt.geo
4、m包中的Line2D的静态内部类Double创建直线对象: new Line2D.Double(double x1,double y1,double x2,double y2);2矩形矩形 使用Rectangle2D.Double类创建一个矩形对象: new Rectangle2D.Double(double x,double y,double w,double h);3圆角矩形圆角矩形 使用RoundRectangle2D.Double类创建一个圆角矩形对象: new RoundRectangle2D.Double( double x,double y,double w,double h,d
5、ouble arcw, double arch); 参数说明见page 236. 参考图12.1 第 5 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.1 绘制基本图形绘制基本图形-2 4椭圆椭圆 使用Ellipse2D.Double类创建一个椭圆对象: new Ellipse2D.Double (double x,double y,double w,double h 0);5绘制圆弧绘制圆弧 使用Arc2D.Double类创建圆弧对象: new Arc2D.Double(double x,doub
6、le y, double w, double h, double start,double extent,int type); 参数说明见page 236.6绘制文本绘制文本 Graphics2D对象调用 drawString(String s, int x, int y) 绘制参数s指定的字符串。第 6 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.1 绘制基本图形绘制基本图形-3 7绘制二次曲线和三次曲线绘制二次曲线和三次曲线 二次曲线可用二阶多项式 y(x)=ax2+bx+c来表示。使用Qua
7、dCurve2D.Double类来创建一个二次曲线,例如: QuadCurve2D curve=new QuadCurve2D.Double (50,30,10,10,50,100); 三次曲线可用三阶多项式y(x)=ax3+bx2+cx+d来表示。使用CubicCurve2D.Double类创建三次曲线,例如: CubicCurve2D curve=new CubicCurve2D.Double( 50,30,10,10,100,100,50,100); 更多参数说明见page 236.8绘制多边形绘制多边形 使用java.awt包中的Polygon类创建空多边形: Polygon poly
8、gon=new Polygon();然后多边形调用addPoint(int x,int y)方法向多边形添加顶点。 例例子子1绘制了太极图和四边形,效果如图12.2。第 7 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.2 变换图形变换图形 (3 3)把把GraphicsGraphics对对象象,比如g_2d设置为具有trans这种功能的画笔g_2d.setTransform(trans); 假 如 rect是 一 个 矩 形 对 象 ,那 么g_2d.draw(rect)画的就是旋转后的矩形的样子
9、。 例子例子2旋转椭圆和字符串,效果如图12.3 AffineTransformAffineTransform类类可可以以使使用用来来实实现现图图形形的的平平移移、缩缩放放或或旋旋转转。(1 1)首先使用)首先使用AffineTransformAffineTransform类创建一个对象:类创建一个对象: AffineTransform trans=new AffineTransform();对象对象transtrans具有最常用的三个方法来实现对图形变换操作:具有最常用的三个方法来实现对图形变换操作: translate(double a,double b) 移动图形 scale(doubl
10、e a,double b) 缩放图形 rotate(double number,double x,double y) 旋转图形(2 2)进行需要的变换进行需要的变换trans.rotate(60.0*3.1415927/180,100,100); 准备把一个矩形绕点(100,100)顺时针旋转60度。第 8 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.3 图形的布尔运算图形的布尔运算 两两个个图图形形进进行行布布尔尔运运算算运运算算之之前前,必必须须分分别别用用这这两两个个图图形形创创建建两两个个
11、AreaArea区域对象,例如:区域对象,例如: Area a1 = new Area(T1); Area a2 = new Area(T2); a1a1就就是是图图形形T1T1所所围围成成的的区区域域;a2a2就就是是T2T2所所围围成成的的区区域域。那那么么,a1a1调调用用addadd方方法法:a1.add(a2); 之之后后,a1a1就就变变成成a1a1和和a2a2经经过过布布尔尔“或或”运运算算后的图形区域。后的图形区域。AreaArea类的常用方法见类的常用方法见page239.page239. 可可以以用用Graphics2DGraphics2D对对象象g g来来绘绘制制或或填填
12、充充一一个个AreaArea对对象象(区区域域): g.draw(a1); 和和 g.fill(a1);例子例子3 绘制图形的布尔运算,效果如图12.4。 第 9 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.4 清除清除 clearRect(int x,int y,int width,int height) 用背景色填充指定矩形以达到清除该矩形的效果组组件件调调用用repaintrepaint方方法法时时,程程序序首首先先清清除除paintpaint()方方法法以以前前所所画的内容,然后再调用画的
13、内容,然后再调用paintpaint()()方法。方法。 注注意意:实实际际上上当当我我们们调调用用repaintrepaint()方方法法时时,程程序序自自动动地地去去调调用用updateupdate(Graphics Graphics g g)方方法法(从从父父类类ComponentComponent继继承承下下来来的的),updateupdate方方法法清清除除paintpaint()方方法法以以前前所所画画的的内内容容,然然后后再再调调用用paintpaint方方法法。但但有有时时不不想想让让程程序序清清除除paintpaint()方方法法以以前前所所画画的的所所有有内内容容,那那么么
14、可可以以在在程程序序中中重重写写updateupdate方方法法(即隐藏父类的方法),根据需要来清除哪些部分或保留哪些部分。(即隐藏父类的方法),根据需要来清除哪些部分或保留哪些部分。例子例子4 效果如图12.5。 第 10 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.5 绘制图像绘制图像 组件上可以显示图像,首先使用Icon类的子类ImageIcon类创建封装 图 像 文 件 (如 cat.jpg)的 IconImage对 象 :Icon icon=new ImageIcon(cat.jpeg)
15、;然后让按钮组件(如button)调用方法设置其上的图像:button.setIcon(icon); 除了上述方法外,可以使用Grapgics绘制图像,步骤如下: 1 1加载图像加载图像 组件调用getToolkit() 方法可以返回这个对象的引用。Tollkit类的对象调用方法 Image getImage(String fileNme)或Image getImage(File file)可以返回一个Image对象,该对象封装着参数指定的图像文件。2绘制图像绘制图像 public boolean drawImage(Image img,int x,int y,ImageObserver ob
16、server); 参数img是被绘制的Image对象,x、y是要绘制指定图像的矩形的左上角所处的位置,observer是加载图像时的图像观察器 。 public boolean drawImage(Image img,int x,int y ,int width ,int height ,ImageObserver observer) 第 11 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物例子例子5 5 例例子子5绘制了一幅图像,并更改了窗口左上角的咖啡图像。效果如图12.6。 注:JFrame对象可用
17、setIconImage(Image image)方法设置窗口左上角的图像,Java窗口的默认图标是一个咖啡杯。第 12 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.6 播放音频播放音频 播放音频的步骤如下步骤如下。(1)创建File对象File musicFile=new File(hello.wav);(2)获取URI对象(URI类属于包)URI uri=musicFile.toURI();(3)获取URL对象URI url=uri.toURL();(4)创建音频对象(AudioClip和Ap
18、plet类属于java.applet包)AudioClip clip=Applet.newAudioClip(url); (5)播放,循环与停止clip.play() 开始播放,clip.loop() 循环播放,clip.stop() 停止播放。例子例子6 Example12_6.java , AudioClipDialog.java在应用程序中播放音频, 效果如图12.7 .第 13 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物12.7 小结小结1可以使用Graphics类或其子类Grapgics2D类绘制各种基本图形、图像 。2在应用程序中可以播放 .au,.aiff,.wav,.midi,.rfm格式的音频 。“本节结束咯本节结束咯偶都会了偶都会了太葱明了太葱明了” 可以听到美妙的音乐喽!可以听到美妙的音乐喽! 第 14 页采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物