您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Java语言程序设计基础教程课件(第14章)
第14章Java多媒体编程:图形、图像和声音●AWT绘图,理解图形环境和图形对象,控制颜色和字体●理解并能够使用Graphics方法绘制线条、矩形、圆角矩形、三维矩形、椭圆、弧和多边形●Java2D图形●理解并能够使用Graphic2D方法绘制基本图形、控制线条粗细、颜色渐变等●Java的图像处理●在小应用程序中绘制图像●在应用程序中绘制图像●Java媒体框架JMF体系结构及应用14.1AWT绘图图形环境的使用使Java可以在屏幕上绘图,图形对象通过控制如何绘制图形来管理图形环境。图形对象包含绘图、字体控制、颜色控制等方法。14.1.1Graphics类Component类的paint()方法有一个Graphics类型的参数。Graphics类是所有图形上下文的抽象基类,Graphics类实例化对象代表画笔,封装了Java支持的基本呈现操作所需的状态信息,提供了绘制各种图形的方法,可以在组件的坐标系内绘制图形、图像等。14.1.2绘制文本、建立字体drawString(Stringstr,intx,inty)使用此图形上下文的当前字体和颜色绘制由指定string给定的文本。最左侧字符的基线位于此图形上下文坐标系统的(x,y)位置处。参数:str-要绘制的string。x-x坐标。y-y坐标。drawChars(char[]data,intoffset,intlength,intx,inty)使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。首字符的基线位于此图形上下文坐标系统的(x,y)位置处。参数:data-要绘制的字符数组offset-数据的初始偏移量length-要绘制的字符数x-文本基线的x坐标y-文本基线的y坐标14.1.3绘制基本图形1.直线drawLine(intx1,inty1,intx2,inty2)在此图形上下文的坐标系统中,使用当前颜色在点(x1,y1)和(x2,y2)之间画一条线。参数:x1-第一个点的x坐标。y1-第一个点的y坐标。x2-第二个点的x坐标。y2-第二个点的y坐标。2.矩形drawRect(intx,inty,intwidth,intheight)绘制指定矩形的边框。矩形的左边和右边位于x和x+width。顶边和底边位于y和y+height。使用图形上下文的当前颜色绘制该矩形。参数:x-要绘制矩形的x坐标。y-要绘制矩形的y坐标。width-要绘制矩形的宽度。height-要绘制矩形的高度。fillRect(intx,inty,intwidth,intheight)使用图形上下文的当前颜色填充指定的矩形。3.圆角矩形drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)用此图形上下文的当前颜色绘制圆角矩形的边框。矩形的左边和右边分别位于x和x+width。矩形的顶边和底边位于y和y+height。参数:x-要绘制矩形的x坐标。y-要绘制矩形的y坐标。width-要绘制矩形的宽度。height-要绘制矩形的高度。arcWidth-4个角弧度的水平直径。arcHeight-4个角弧度的垂直直径。fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)用当前颜色填充指定的圆角矩形。4.椭圆drawOval(intx,inty,intwidth,intheight)绘制椭圆的边框。得到的是一个圆或椭圆,它恰好适合放在由x、y、width和height参数指定的矩形内。椭圆覆盖区域的宽度为width+1像素,高度为height+1像素。fillOval(intx,inty,intwidth,intheight)使用当前颜色填充外接指定矩形框的椭圆。14.2Java2D图形在前面小节中,我们绘制图形的手段是使用paint(Graphicsg)方法,通过Graphics对象g调用各种方法绘制图形。Java提供了新类Graphics2D,它是Graphics类的子类。Graphics2D类扩展了Graphics类,提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在Java平台上呈现二维形状、文本和图像的基础类。一个Graphics2D对象把直线、圆等作为一个对象来绘制,若使用paint(Graphicsg)方法来绘制,只需将Graphics对象强制转换为Graphics2D对象即可。Graphics2D对象分别使用draw和fill方法来绘制和填充一个图形。14.2.1绘制基本图形1.直线使用java.awt.geom包中的Line2D的子类Line2D.Double创建一个直线对象。例如:Line2D.Double(doubleX1,doubleY1,doubleX2,doubleY2);根据指定坐标构造并初始化一个(X1,Y1)到(X2,Y2)的直线对象。2.矩形使用java.awt.geom包中的Rectangle2D.Double类来创建一个矩形对象。例如:Rectangle2D.Double(doublex,doubley,doublew,doubleh);根据指定参数,构造和初始化一个左上角坐标是(x,y),宽是w,高是h的矩形对象。3.圆角矩形使用java.awt.geom包中的RoundRectangle2D.Double类创建一个圆角矩形对象。例如:RoundRectangle2D.Double(doublex,doubley,doublew,doubleh,doublearcw,doublearch);4.椭圆使用java.awt.geom包中的Ellipse2D.Double类创建一个椭圆对象。例如:Ellipse2D.Double(doublex,doubley,doublew,doubleh);根据指定坐标构造和初始化Ellipse2D椭圆对象。14.2.2控制图形线条的粗细Graphics类创建的“画笔”的粗细是默认的,不能更改。而Graphics2D中,可以改变画笔的粗细。使用java.awt.BasicStroke类创建一个供画笔选择线条粗细的对象。BasicStroke类的一个常用构造方法如下:BasicStroke(floatwidth,intcap,intjoin);构造一个具有指定属性的实心的BasicStroke。参数width决定BasicStroke的宽度,也就是画笔线条的粗细,默认值是1;参数cap决定BasicStroke端点的形状,取值是BasicStroke.CAP_BUTT、BasicStroke.CAP_ROUND、BasicStroke.CAP_SQUARE;参数join决定在线条线段交汇处的处理,join的取值是BasicStroke.JOIN_ROUND、BasicStroke.JOIN_BEVEL、BasicStroke.JOIN_MITER。Graphics2D对象,通过调用setStroke(BasicStrokea)方法设置线条形状。14.2.3颜色渐变Java2D还允许使用渐变的颜色填充一个图形。GradientPaint类提供了使用线性颜色渐变模式填充Shape的方法。使用GradientPaint类可以定义一个渐变的颜色对象。GradientPaint类的构造方法如下:GradientPaint(floatx1,floaty1,Colorcolor1,floatx2,floaty2,Colorcolor2,booleancyclic);14.2.4旋转图形java.awt.geom.AffineTransform类执行从2D坐标到其他2D坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移、缩放、翻转、旋转和剪切来构造仿射变换。也就是说,可以平移、缩放、旋转一个图形。使用AffineTransform类的构造方法:AffineTransform();创建一个对象:AffineTransformtrans=newAffineTransform();对象trans具有最常用的3个方法来实现对图形变换操作:14.3Java的图像处理下面分别给出在Applet和Application中的Java图像处理例子。14.3.1在小应用程序中绘制图像Java支持两种主要的图像格式:GIF(GraphicsInterchangeFormat,图像互换格式)和JPEG(JointPhotographicExpertsGroup,联合图像专家组)。插图和图标经常使用GIF图像格式,相片图像经常使用JPG图像格式。为了显示一幅图像,必须首先将其加载到计算机内存中。Applet类提供了一个重要的方法:getImage(URLurl,Stringname);14.3.2在应用程序中绘制图像Applet类有一个下载图像的方法getImage,因此,在小程序中较容易绘制图像。编写应用程序时,经常要使用Frame类,但Frame类没有获取图像的方法。因此需要java.awt包中的Toolkit类。Toolkit类是一个抽象类,不能用构造方法直接创建这样的对象,但Java运行环境提供了一个Toolkit对象,任何一个组件调用getToolkit()方法可以返回这个对象的引用。Toolkit类有一个获取图像的方法getImage(Strings)。Frame对象可以使用setIconImage()方法设置窗口左上角的图标,Java窗口的默认图标是一个咖啡杯。在下面的例子中,创建一个画布组件对象,在这个画布上绘制图像,然后把画布添加到窗口中,并将窗口左上角的图标设置为画布所绘制的图像。14.4打印图形、图像获得一个PrintJob对象,可以在应用程序中打印图形、图像。通过PrintJob对象的getGraphics()方法获得一个Graphics对象g,使用g所画的图形、图像将被发送到打印机打印出来。当运行应用程序时,系统会打开熟悉的打印对话框。但PrintJob是java.awt包中的一个抽象类,不能用它直接创建对象,java.awt包中的抽象类Toolkit可以获得一个PrintJob对象。Toolkit类有一个获得PrintJob对象的方法getPrintJob(Framef,Strings,null)。任何一个组件都可以使用getToolkit()方法获得一个Toolkit对象。14.5Java媒体框架--JMFJava多媒体框架(JavaMediaFramework,JMF)实际上是Java的一个类包,包含了许多用于处理多媒体的API,该核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,允许用户制作纯音频流和视频流。使用JMF,能够编写出功能强大的多媒体程序,却不用关心底层复杂的实现细节。几乎所有的媒体类型的操作和处理都可以通过JMF来实现。JMF是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,本节主要介绍JMF的几个核心接口和类,然后通过一个简单的例子展示如何利用该接口进行编程。Sun以四种不同的专用版本提供JMF2.1.1技术,满足专业开发人员的各类需求,第一个是一个轻便型版本,它完全采用Java语言编写,适用于任何Java兼容系统。此外,开发人员还可选择分别适用于Solaris、Windows或Linux等操作系统的性能最优化软件包,以提高性能和能力。JMF目前的最新版本是2.1,下载地址:所支持的功能●可以在Java
本文标题:Java语言程序设计基础教程课件(第14章)
链接地址:https://www.777doc.com/doc-3685742 .html