java图形图像与多媒体详解

上传人:第*** 文档编号:56103683 上传时间:2018-10-09 格式:PDF 页数:23 大小:406.61KB
返回 下载 相关 举报
java图形图像与多媒体详解_第1页
第1页 / 共23页
java图形图像与多媒体详解_第2页
第2页 / 共23页
java图形图像与多媒体详解_第3页
第3页 / 共23页
java图形图像与多媒体详解_第4页
第4页 / 共23页
java图形图像与多媒体详解_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《java图形图像与多媒体详解》由会员分享,可在线阅读,更多相关《java图形图像与多媒体详解(23页珍藏版)》请在金锄头文库上搜索。

1、第第 7 章章 图形、图像与多媒体图形、图像与多媒体7.1 绘图基础绘图基础要在平面上显示文字和绘图,首先要确定一个平面坐标系。Java 语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角。一个坐标点(x,y)对应屏幕窗口中的一个像素,必须是整数。如图 7.1 所示。窗口大小由超文本文件中的 width 和 height 指定。例如,以下超文本确定窗口宽为 250 像素,高位 400像素:7.1.1 Graphics 类的基本功能类的基本功能在java.awt包中,类Graphics提供的功能有:建立字体、设定显示颜色、显示图像和文本,绘制和填充各种几何图形

2、。可以从图形对象或使用 Component 的 getGraphics()方法得到 Graphics 对象。Graphics2D 类继承 Graphics 类,并且增加了许多状态属性,使应用程序可以绘制出更加丰富多彩的图形。在某个组件中绘图,一般应该为这个组件所需的子类重写 paint(0 方法,在该重写的方法中进行绘图。但要在 JComponent 子类的组件中绘图,应重写 paintComponent()方法,在该方法中进行绘图。例如,继承定义一个文本区子类,要在这样的文本区对象中绘图,就应给这个文本区子类重写 paintComponent()方法。系统自动为程序通过图形对象,并以参数 g

3、 传递给 paint()方法和 paintComponent()方法。7.1.2 字型和颜色字型和颜色显示文字的方法主要有三种:(1)drawString(String str,int x,int y),在指定的位置显示字符串。(2)drawChar(char date,int offset,int length,int x,int y),在指定的位置显示字符数组中的文字,从字符数组的 offset 开始,最多显示 length 个字符。(3)drawBytes(char date,int offset,int length,int x,int y),在指定的位置显示字节数组中的文字,从字节数

4、组的 offset 开始,最多显示 length 个字符。这里给出的显示位置(x,y)为文字的基线的开始坐标,不是文字显示的矩形区域的左上角坐标。文字字型有三个要素:字体、风格和字号。常用的字体有 Times New Roman、Symbol、宋体、楷体等。0.0XY (30.30)图 7.1 平面坐标系常用的风格有三种:正常、粗体和斜体,分别用三个常量表示:Font.PLAIN(正常) 、Font.BOLD(粗体)和Font.ITALIC(斜体) 。风格可以组合使用,例如,Font.BOLD+Font.ITALIC。字号是字的大小,单位是磅。在 Java 语言中,用类 Font 对象设置字型

5、。Font 类的构造方法有:Font(String fontName,int style,int size),3 个参数分别表示字体、风格和字号。例如,代码:Font fnA=new Font(“细明体”,Font.PLAIN,12)设置的字型是:细明体、正常风格,12 磅字号。Font 类的其他常用方法:(1)getStyle(),返回字体风格。(2)getSize(),返回字体大小。(3)getName(),返回字体名称。(4)isPlain(),测试字体是否是正常字体。(5)isBold(),测试字体是否是粗体。(6)isItalic(),测试字体是否是斜体。使用 Graphics 的方

6、法 setFont(Font font)设置字型。【例 7.1】小应用程序用 6 种字型显示字符串,显示内容说明本身的字型。import java.applet.*;import java.awt.*;public class Example7_1 extends AppletFont f1=new Font(“Helvetica“,Font.PLAIN,18);Font f2=new Font(“Helvetica“,Font.BOLD,10);Font f3=new Font(“Helvetica“,Font.ITALIC,12);Font f4=new Font(“Helvetica“,

7、Font.ITALIC,12);Font f5=new Font(“Courier“,Font.BOLD+Font.ITALIC,14);Font f6=new Font(“Dialog“,Font.ITALIC,14);public void paint(Graphics g)g.setFont(f1);g.drawString(“18pt plain Helvetica“,5,20);g.setFont(f2);g.drawString(“10pt bold Helvetica“,5, 43);g.setFont(f3);g.drawString(“12pt italic Helvetic

8、a“,5,58);g.setFont(f4);g.drawString(“12pt plain Courier“,5,75);g.setFont(f5);g.drawString(“14pt bold g.setFont(f6);g.drawString(“14pt italic Dialog“,5,111);例 7.1 程序界面用类 Color 的对象设置颜色,有两种方法生成各种颜色。一是用类 Color 预定义的颜色:black、red、white、yellow;二是通过红绿蓝(RGB)的值合成颜色。与颜色有关的常用方法:(1)用类 Color 的构造方法 Color(int R,int

9、G,int B)创建一个颜色对象,参数 R、G、B 分别表示红色、绿色和蓝色,它们的取值是从 0 到 255。(2)用类 Graphics 的方法 setColor(Color c),参数 c 的取值参见表 7-1。(3)用类 Component 的方法 setBackground(Color c)设置背景颜色。因为小程序是组件的子类,直接可用 setBackground()方法改变背景色。(4)用类 Graphics 的方法 getColor()获取颜色。表 7-1 Color 类预定义颜色常量blackbluecyandarkGraygraygreenlighGraymagentaoran

10、gepinkredwhileyellow【例 7.2】小应用程序设置颜色并涂方块,其中绘制方块的方法参见 7.2 节。import java.applet.*;import java.awt.*;public class Example7_2 extends Appletpublic void paint(Graphics g)setSize(380,200);for(int i=0;i160)i=1;g.setColor(Color.red);g.fillRect(i, 10, 20, 20);g.drawString(“我正在学习update()方法!“, 100, 100);tryThr

11、ead.sleep(100);/程序暂停0.1秒catch(InterruptedException e)repaint();public void update(Graphics g)g.clearRect(i, 10, 200, 100);/不清除“我正在学习update()方法!”paint(g);一般的绘图程序要继承 JFrame,定义一个 JFrame 窗口子类,还要继承 JPanel,定义一个 JPanel 子类。在 JPanel 子类中重定义方法 paintcomponent() ,在这个方法中调用绘图方法,绘制各种图形。【例 7.4】使用 XOR 绘图模式的应用程序,绘图效果参

12、见图 7.2。import java.awt.*;import javax.swing.*;public class Example7_4 extends JFramepublic static void main(String args)GraphicsDemo myGraphicsFrame=new GraphicsDemo();class ShapesPanel extends JPanelShapesPanel()setBackground(Color.white);public void paintComponent(Graphics g)super.paintComponents(

13、g);setBackground(Color.yellow);g.setXORMode(Color.red);g.setColor(Color.green);g.fillRect(20, 20, 80, 40);/实际颜色是green+yellow的混合色=灰色g.setColor(Color.yellow);g.fillRect(60, 20, 80, 40);/后一半是yellow+yellow=red,/前一半是yellow+灰色g.setColor(Color.green);g.fillRect(20, 70, 80, 40);/实际颜色green+yellow的混合色=灰色g.fil

14、lRect(60, 70, 80, 40);/前一半是(green+yellow)+灰色=背景色/后一半是green+yellow=灰色g.setColor(Color.green);g.drawLine(80, 100, 180, 200);/该直线是green+yellow=灰色g.drawLine(100, 100, 200, 200);/该直线是green+yellow=灰色g.drawLine(140, 140, 220, 220);setBackground(Color.yellow);g.drawLine(20, 30, 160, 30);g.drawLine(20, 75, 1

15、60, 75);class GraphicsDemo extends JFramepublic GraphicsDemo()this.getContentPane().add(new ShapesPanel();setTitle(“基本绘图方法演示“);setSize(300,300);setVisible(true);图 7.2 例 7.4 程序绘图效果图7.2.2 Graphics2D 类的绘图方法类的绘图方法Java语言在Graphics类提供绘制各种基本的几何图形的基础上, 扩展Graphics类提供了一个Graphics2Dl类,它拥有更强大的二维图形处理能力,提供、坐标转换、颜色管

16、理以及文字布局等更精确的控制。1.绘图属性Graphics2D 定义了几种情况,用于添加或改变图形的状态属性。可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式;设定平移、旋转、缩放或修剪变换图形;以及设定填充图形的颜色和图案等。图形状态属性用特定的对象存储。(1)stroke 属性stroke 属性控制线条的宽度、笔形样式、线段连接方式或短划线图案。该属性的设置需要先创建 BasicStroke 对象,再调用 setStroke()方法来设置。创建 BasicStroke 对象的方法有:BasicStroke(float w)指定线条宽度 w。BasicStroke(float w,int cap,int join)cap 是端点样式:CAP_BUTT(无修饰)CAP_ROUND(半圆形末端)CAP_SQUARE(方形末端,默认值)Join 定义两线段交汇处的连接方式:JOIN_BEVEL(无修饰)JOIN_(尖形末端,默认值)JOIN_(圆形末端) 。(2)paint 属

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号