1、JAVA 图形图像与多媒体详解第7章 图形、图像与多媒体7.1 绘图基础要在平面上显示文字和绘图,首先要确定一个平面坐标系。Java语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角。一个坐标点(x,y)对应屏幕窗口中的一个像素,必须是整数。如图7.1所示。窗口大小由超文本文件中的width和height指定。例如,以下超文本确定窗口宽为250像素,高位400像素: 7.1.1 Graphics类的基本功能在java.awt包中,类Graphics提供的功能有:建立字体、设定显示颜色、显示图像和文本,绘制和填充各种几何图形。可以从图形对象或使用Compone
2、nt的getGraphics()方法得到Graphics对象。Graphics2D类继承Graphics类,并且增加了许多状态属性,使应用程序可以绘制出更加丰富多彩的图形。在某个组件中绘图,一般应该为这个组件所需的子类重写paint(0方法,在该重写的方法中进行绘图。但要在JComponent子类的组件中绘图,应重写paintComponent()方法,在该方法中进行绘图。例如,继承定义一个文本区子类,要在这样的文本区对象中绘图,就应给这个文本区子类重写paintComponent()方法。系统自动为程序通过图形对象,并以参数g传递给paint()方法和paintComponent()方法。7
3、.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),在指定的位置显示字节数组中的文字,从字节数组的offset开始,最多显示length个字符。这里给出的显示位置(x,y)为文字
4、的基线的开始坐标,不是文字显示的矩形区域的左上角坐标。文字字型有三个要素:字体、风格和字号。常用的字体有Times New Roman、Symbol、宋体、楷体等。常用的风格有三种:正常、粗体和斜体,分别用三个常量表示:Font.PLAIN(正常)、Font.BOLD(粗体)和Font.ITALIC(斜体)。风格可以组合使用,例如,Font.BOLD+Font.ITALIC。字号是字的大小,单位是磅。在Java语言中,用类Font对象设置字型。Font类的构造方法有:Font(String fontName,int style,int size),3个参数分别表示字体、风格和字号。例如,代码:
5、Font fnA=new Font(“细明体”,Font.PLAIN,12)设置的字型是:细明体、正常风格,12磅字号。Font类的其他常用方法:(1)getStyle(),返回字体风格。(2)getSize(),返回字体大小。(3)getName(),返回字体名称。(4)isPlain(),测试字体是否是正常字体。(5)isBold(),测试字体是否是粗体。(6)isItalic(),测试字体是否是斜体。使用Graphics的方法setFont(Font font)设置字型。【例7.1】小应用程序用6种字型显示字符串,显示内容说明本身的字型。import java.applet.*;impo
6、rt java.awt.*;public class Example7_1 extends Applet Font 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,Font.ITALIC,12); Font f5=new Font(Courier,Font.BOLD+Font.ITALIC,14); Font f6=new Font(Dialo
7、g,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 Helvetica,5,58); g.setFont(f4);g.drawString(12pt plain Courier,5,75); g.setFont(f5);g.drawString(14pt
8、bold & italic Times Roman,5,92); g.setFont(f6);g.drawString(14pt italic Dialog,5,111); 用类Color的对象设置颜色,有两种方法生成各种颜色。一是用类Color预定义的颜色:black、red、white、yellow;二是通过红绿蓝(RGB)的值合成颜色。与颜色有关的常用方法:(1) 用类Color的构造方法Color(int R,int G,int B)创建一个颜色对象,参数R、G、B分别表示红色、绿色和蓝色,它们的取值是从0到255。(2) 用类Graphics的方法setColor(Color c),
9、参数c的取值参见表7-1。(3) 用类Component的方法setBackground(Color c)设置背景颜色。因为小程序是组件的子类,直接可用setBackground()方法改变背景色。(4) 用类Graphics的方法getColor()获取颜色。表7-1 Color类预定义颜色常量blackbluecyandarkGraygraygreenlighGraymagentaorangepinkredwhileyellow【例7.2】小应用程序设置颜色并涂方块,其中绘制方块的方法参见7.2节。import java.applet.*;import java.awt.*;public
10、class Example7_2 extends Applet public void paint(Graphics g) setSize(380,200); for(int i=0;i=10;i+) Color myredcolor=new Color(i*25+5,0,0); g.setColor(myredcolor); g.fillRect(i*32+5, 2, 28, 28); /用指定的颜色填充方块 for(int i=0;i=10;i+) Color mygreencolor=new Color(0,i*25+5,0); g.setColor(mygreencolor); g.f
11、illRect(i*32+5, 32, 28, 28); /用指定的颜色填充方块 for(int i=0;i160)i=1; g.setColor(Color.red); g.fillRect(i, 10, 20, 20); g.drawString(我正在学习update()方法!, 100, 100); try Thread.sleep(100); /程序暂停0.1秒 catch(InterruptedException e) repaint(); public void update(Graphics g) g.clearRect(i, 10, 200, 100); /不清除“我正在学习
12、update()方法!” paint(g); 一般的绘图程序要继承JFrame,定义一个JFrame窗口子类,还要继承JPanel,定义一个JPanel子类。在JPanel子类中重定义方法paintcomponent(),在这个方法中调用绘图方法,绘制各种图形。【例7.4】使用XOR绘图模式的应用程序,绘图效果参见图7.2。import java.awt.*;import javax.swing.*;public class Example7_4 extends JFrame public static void main(String args) GraphicsDemo myGraphicsFrame=new GraphicsDemo(); class ShapesPanel extends JPanel ShapesPanel() setBackground(Color.white);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1