第9章 Java在多媒体中的应用.ppt
《第9章 Java在多媒体中的应用.ppt》由会员分享,可在线阅读,更多相关《第9章 Java在多媒体中的应用.ppt(123页珍藏版)》请在三一文库上搜索。
1、第9章 Java在多媒体中的应用,9.1 利用AWT绘图 9.2 Graphics类的使用 9.3 Font类的使用 9.4 图像处理 9.5 动画图像处理,9.1 利用AWT绘图,这一节中我们主要介绍如何使用Java语言提供的AWT包绘图。java.awt包中提供了用于绘图的API,我们通常称之为2D API。不要以为只有设计绘图程序或游戏软件才会用到Java 2D,其实Java 2D的用途可能远比你想象的更广泛。,其实,只要你的程序有GUI,就很可能会用到Java 2D。因为AWT和Swing的组件常常无法完全适合我们,这个时候自己绘制一部分的GUI就有绝对的必要。甚至,我们还可以用Jav
2、a 2D来绘制自己的组件。实际上,AWT和Swing组件都是透过Java 2D来进行绘制的。,Java 2D API增强了AWT的图形、文本和图像功能,可以开发更为强大的用户接口和新型的Java应用程序。除了更为强大的图形、字体和图像API外,Java 2D API还改进了颜色的定义与复合及对任意几何形状和文本的选中检测,并为打印机和显示设备提供了统一的绘制模式。Java 2D API还可以创建高级图形库,并可创建图像和图形文件读/写过滤器。当与Java媒体框架 (JMF) 和其他Java媒体应用程序配合使用时,Java 2D API还可用来创建和显示动画和其他多媒体演示稿。,到底Java 2
3、D API有多强大?这一点我们可以通过SUN JDK包中提供的例程来了解。在命令行窗口下输入: c:cd jdk1.2demojfcJava2D c:jdk1.2demojfcJava2Djava -classpath Java2Demo.jar Java2Demo 或 c:jdk1.2demojfcJava2Dappletviewer java2demo.html 看到了吗?Java 2D神奇的威力!,下面我们来学习如何使用Java 2D绘图。上面看到的例子虽然功能十分强大,但是它的实现非常复杂。下面,我们先从简单一点的入手。 从java.awt.Component类(所有窗口对象的基类)继
4、承的类提供了一个名为paint()的方法,在需要重新绘制组件时,可调用该方法。 paint()方法只有一个参数,该参数是Graphics类的实例。如果在某个继承了Component的类中覆盖了该方法,那么就可以使用该方法来控制在控制区域着何种颜色。例如,下面的类创建了一个带有蓝背景的面板。,例9.1 BluePanel.java import java.awt.*; class BluePanel extends Panel public static void main(String args) Frame f = new Frame(); BluePanel p = new BluePan
5、el(); f.add(p); f.setSize(300,100); f.setVisible(true);,/ Invoked when the panel needs to be repainted public void paint(Graphics g) / Get the rectangle that represents the viewable area / of the panel Rectangle rect = g.getClipBounds(); / Set the context to paint in a pre-defined color g.setColor(C
6、olor.blue); / Fill the rectangle with the current color g.fillRect(rect.x, rect.y, rect.width, rect.height); 程序运行结果如图9.1所示。,图 9.1,9.2 Graphics类的使用,java.awt中提供了一系列的类用于绘制图形。其中,Color类包含了编辑颜色的方法和常量;Font类包含了编辑字体的方法和常量;FontMetrics类包含了获取字体信息的方法;Polygon类包含了创建多边形的方法;Toolkit类提供了从系统获得图形信息的方法,例如可显示的字体集和屏幕分辨率等等;
7、Graphics类包含了绘制字符串、线条以及各种几何图形的方法。,Graphics是一个抽象类,其作用是定义一个真正的工具,用来接受图形操作。在该类中,有47个公用方法,可以用作显示图像和文本、绘制和填充形状、剪贴图像操作等等。 9.2.1 绘制字符串、字符和字节 用于绘制字符串、字符和字节的方法分别为 public abstract void drawString(String string, int x, int y)在坐标(x,y)处以当前字体和颜色绘制指定的字符串string。, public void drawChars(char chars, int offset, int num
8、ber, int x, int y) 在坐标(x,y)处以当前字体和颜色绘制指定的一系列字符。chars为要绘制的字符组,offset为位置的坐标,number为要绘制的元素个数。 public void drawBytes(byte bytes, int offset, int number, int x, int y) 在坐标(x,y)处以当前字体和颜色绘制指定的一系列字节。bytes为要绘制的字节数组,offset为位置的坐标,number为要绘制的元素个数。,下面的例子展示了如何使用了drawString(),drawChars()和drawBytes()三个方法: 例9.2 Draw
9、SCB.java import java.awt.*; public class DrawSCB extends Frame String s = “Using drawString!“; char c = c, h, a, r, s, , 8; byte b = b, y, t, e, 1, 2, 3;,public static void main(String args) DrawSCB frame = new DrawSCB(); frame.setSize(300, 100); frame.setVisible(true); public void paint(Graphics g)
10、 g.drawString(s, 100, 40); g.drawChars(c, 0, 7, 100, 65); g.drawBytes(b, 0, 5, 100, 90); 程序运行结果如图9.2所示。,图 9.2,9.2.2 颜色控制 Color类定义了颜色常量和方法。每种颜色都是从RGB(红/绿/蓝)值创建出来的。一个RGB值有三部分,都是从0255的整数值,分别代表着三种颜色的含量。因此,实际上我们可以使用256256256种颜色,即224种颜色。这就是我们常说的24位真彩色。但不是任何计算机都可以显示所有的颜色,就目前来说,大部分计算机都可以显示24位甚至超过24位的彩色。显然,我
11、们很难记住一种颜色的RGB值,因而,Color类将一些最常用的颜色预定义为常量以方便我们使用。表9.1列出了预定义的颜色常量。,表9.1 Color类中定义的颜色常量,Color类中常用的一些方法如下: public Color(int r, int g, int b):创建指定RGB值的颜色。 public int getRed():返回红色含量的值。 public int getBlue():返回蓝色含量的值。 public int getGreen():返回绿色含量的值。 Graphics类与Color类相关的常用方法有: public abstact Color getColor():
12、返回图形上下文的当前颜色。 public abstract void setColor(Color c):设置图形上下文的当前颜色。,下面来看一个颜色控制的实例。 例9.3 ShowColor.java import java.awt.*; public class ShowColor extends Frame int red, green, blue; public static void main(String args) ShowColor frame = new ShowColor(); frame.setSize(300, 100); frame.setVisible(true);
13、 public ShowColor(), red = 200; green = 100; blue = 0; public void paint(Graphics g) g.setColor(new Color(red, green, blue); g.drawString(“Draw color string.“, 50, 40); Color color = g.getColor();,g.drawString(“Red:“+color.getRed(), 10, 70); g.drawString(“Green:“+color.getGreen(), 100, 70); g.drawSt
14、ring(“Blue:“+color.getBlue(), 200, 70); 程序运行结果如图9.3所示。,图 9.3,9.2.3 绘制几何图形 Graphics类中用于绘制几何图形的方法如下: public abstract void drawLine(int x1, int y1, int x2, int y2) 在点(x1,y1)和(x2,y2)之间用当前颜色绘制线段。 public void drawRect(int x, int y, int width, int height) 以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画矩形。 public a
15、bstact void fillRect(int x, int y, int width, int height),以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画一个实心的矩形。 public abstact void clearRect(int x, int y, int width, int height) 以点(x,y)为左上角坐标,width和height为宽度和高度,用当前背景颜色画一个实心的矩形。此方法用于清除某个矩形显示区域。 public abstact void drawRoundRect(int x, int y, int width, in
16、t height, int arcWidth, int arcHeight) 以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画圆角矩形。, public abstact void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 以点(x,y)为左上角坐标,width和height为宽度和高度,用当前颜色画一个实心的圆角矩形。 public void draw3Drect(int x, int y, int width, int height, boole
17、an b) 用指定的width和height,以当前颜色画一个三维矩形。矩形的左上角坐标为(x,y)。当b为true时,矩形为凸的;b为false时,矩形为凹的。, public void fill3Drect(int x, int y, int width, int height, boolean b) 用指定的width和height,以当前颜色画一个填充的三维矩形。矩形的左上角坐标为(x,y)。当b为true时,矩形为凸的;b为false时,矩形为凹的。 public abstract void drawOval(int x, int y, int width, int height)
18、用指定的width和height,以当前颜色画椭圆。外切矩形的左上角坐标为(x,y)。 public abstract void fillOval(int x, int y, int width, int height) 用指定的width和height,以当前颜色画实心椭圆。外切矩形的左上角坐标为(x,y)。, public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) 参考外切矩形的左上角坐标(x,y),用指定的width和height,以当前颜色绘制一段弧。
19、弧段从起始角startAngle开始一直到张角arcAngle。 public abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) 参考外切矩形的左上角坐标(x,y),用指定的width和height,以当前颜色绘制一段实心的弧。弧段从起始角startAngle开始一直到张角arcAngle。, public abstract void drawPolygon(int xPoints, int yPoints, int points) 以当前颜色画一个具有points个
20、顶点的多边形。xPoint和yPoint数组分别指定了每个顶点的x和y坐标。 public void drawPolygon(Polygon p) 以当前颜色画指定的多边形。, public abstract void fillPolygon(int xPoints, int, yPoints, int points) 以当前颜色画一个具有points个顶点的填充多边形。xPoint和yPoint数组分别指定了每个顶点的x和y坐标。 下面我们通过一个例子来学习这些方法。,例9.4 DrawDemo.java import java.awt.*; public class DrawDemo ex
21、tends Frame public static void main(String args) DrawDemo frame = new DrawDemo(); frame.setSize(400, 500); frame.setVisible(true); public void paint(Graphics g), / draw a line g.drawLine(10, 30, 200, 40); / draw a rectangle g.drawRect(10, 50, 100, 50); / draw a filled rectangle g.fillRect(150, 50, 1
22、00, 50); / draw a rounded rectangle g.drawRoundRect(10, 120, 50, 50, 10, 20); / draw a filled rounded rectangle g.fillRoundRect(80, 120, 50, 50, 40, 20); / draw a ellipse,g.drawRoundRect(150, 130, 80, 20, 70, 70); / draw a filled square g.drawRoundRect(250, 120, 50, 50, 0, 0); / draw a circle g.draw
23、RoundRect(330, 120, 50, 50, 50, 50); g.setColor(Color.yellow); / draw a raised 3D rectangle g.draw3DRect(10, 190, 50, 50, true); / draw a sunk 3D rectangle g.draw3DRect(100, 190, 50, 50, false);,/ draw a filled raised 3D rectangle g.fill3DRect(200, 190, 50, 50, true); / draw a filled sunk 3D rectang
24、le g.fill3DRect(300, 190, 50, 50, false); g.setColor(Color.black); / draw an oval g.drawOval(10, 260, 70, 50); / draw an filled oval g.fillOval(200, 260, 50, 70); / draw an arc g.drawArc(10, 350, 60, 60, 0, 180);,/ draw solid arc g.fillArc(100, 350, 50, 60, 0, 270); g.fillArc(200, 350, 50, 60, 0, -1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 Java在多媒体中的应用 Java 多媒体 中的 应用
链接地址:https://www.31doc.com/p-5030348.html