JAVA程序设计基础6_第1页
JAVA程序设计基础6_第2页
JAVA程序设计基础6_第3页
JAVA程序设计基础6_第4页
JAVA程序设计基础6_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.1 Java图形处理概述图形处理概述6.2 基本图形的输出基本图形的输出6.3 设置图形的颜色设置图形的颜色6.4 文字的图形化输出文字的图形化输出Java系统及应用程序是如何实现图形系统及应用程序是如何实现图形功能的呢?首先,功能的呢?首先,Java系统在系统在AWT构件类构件类的根类的根类Component类中预置了一种称作类中预置了一种称作Paint(Graphics g)的方法,该方法的参)的方法,该方法的参数是一个图形类对象数是一个图形类对象Graphics g,通常它,通常它是由系统自动生成而不是由用户程序来实是由系统自动生成而不是由用户程序来实例化的,在类例化的,在类Grap

2、hics中系统预置了大量中系统预置了大量的用于图形处理与输出的方法,的用于图形处理与输出的方法,在在Paint()方法的重新定义中,可以通方法的重新定义中,可以通过过Graphics的对象的对象g来调用这些方法进行图来调用这些方法进行图形处理与输出。特别注意的是形处理与输出。特别注意的是Paint()方法方法的调用是由程序运行的环境而不是程序本的调用是由程序运行的环境而不是程序本身来完成的,每当一个身来完成的,每当一个AWT构件首次显示构件首次显示或在部分显示已被破坏而必须刷新时该方或在部分显示已被破坏而必须刷新时该方法被自动地调用。显示的破坏可能发生在法被自动地调用。显示的破坏可能发生在任何

3、时刻,因此,你的程序必须能在任意任何时刻,因此,你的程序必须能在任意时刻更新显示。时刻更新显示。在在Graphics类中使用类中使用drawLine*()方法方法画一条线段,其调用格式如下:画一条线段,其调用格式如下: drawLine(int x1,int y1,int x2,int y2)Graphics类中提供了类中提供了3种类型的矩形:种类型的矩形:普通矩形、圆角矩形和三维矩形。每一种普通矩形、圆角矩形和三维矩形。每一种矩形都提供两种不同风格的方法:一种是矩形都提供两种不同风格的方法:一种是仅画出矩形的边框;另一种是不仅画出边仅画出矩形的边框;另一种是不仅画出边框,并且还用相同的颜色将

4、整个矩形区域框,并且还用相同的颜色将整个矩形区域填满。画矩形的方法如下。填满。画矩形的方法如下。(1)drawRect(int x,int y,int width,int) 画出普通矩形,参数画出普通矩形,参数x和和y是是矩形左上角顶点坐标,而参数矩形左上角顶点坐标,而参数width和和 height表示所画矩形的宽和高。表示所画矩形的宽和高。(2)fillRect(int x,int y,int width,int height) 画出一个填充型风格的普通矩画出一个填充型风格的普通矩形。形。(3)drawRoundRect(int x,int y,int width,int height,i

5、nt arcWidth,int arcHeight) 画出一个圆角矩形,参数中画出一个圆角矩形,参数中除了具有和普通矩形含义相同的前除了具有和普通矩形含义相同的前4个参数个参数外,还增加了两个用来描述圆角性质的参外,还增加了两个用来描述圆角性质的参数。其中数。其中arcWidth代表了圆角弧的横向直代表了圆角弧的横向直径;径;arcHeight代表了圆角弧的纵向直径。代表了圆角弧的纵向直径。这两个参数的值越大,圆角越大,反之则这两个参数的值越大,圆角越大,反之则越小。越小。(4)fillRoundRect(int x,int y,int width,int height,int arcWidt

6、h,int arcHeight) 画填充型的圆角矩形。画填充型的圆角矩形。(5)draw3DRect(int x,int y,int width,int height,boolean raised) 画三画三维矩形,其中前维矩形,其中前4个参数意义同前,第个参数意义同前,第5个个参数参数raised定义该立体矩形是具有凸出定义该立体矩形是具有凸出(值为(值为true)还是凹下(值为)还是凹下(值为false)的效)的效果。果。(6)fill3DRect(int x,int y,int width,int height,boolean raised) 画填充型三维矩形。画填充型三维矩形。在在Ja

7、va中绘制椭圆是以其外接矩形作中绘制椭圆是以其外接矩形作为参数来实现的,其调用格式与画普通矩为参数来实现的,其调用格式与画普通矩形的方法相似。形的方法相似。(1)drawOval(int x,int y,int width,int height) 绘制一个椭圆,前两绘制一个椭圆,前两个参数为该椭圆外接矩形的左上顶点,后个参数为该椭圆外接矩形的左上顶点,后两个参数为其外接矩形的宽和高,当后两两个参数为其外接矩形的宽和高,当后两个参数的值相等时为圆。个参数的值相等时为圆。(2)fillOval(int x,int y,int width,int height) 绘制椭圆并将其内部用前景色绘制椭圆并

8、将其内部用前景色填充。填充。弧是椭圆或圆的一部分,因而画弧的弧是椭圆或圆的一部分,因而画弧的方法就相当于先画一个椭圆,而后取该椭方法就相当于先画一个椭圆,而后取该椭圆中所需要的一部分。其调用格式如下。圆中所需要的一部分。其调用格式如下。(1)drawArc(int x,int y,int width,int height,int startAngle,int arcAngle) 画一段弧,其前画一段弧,其前4个参数的含个参数的含义与画椭圆一样,它确定了弧所在的椭圆义与画椭圆一样,它确定了弧所在的椭圆的大小及位置,第的大小及位置,第5个参数个参数startAngle表示表示该弧开始位置的角度,第

9、该弧开始位置的角度,第6个参数个参数arcAngle表示该弧转过的角度。角度的参照系统规表示该弧转过的角度。角度的参照系统规定水平向右为定水平向右为0,逆时钟方向为正角度值,逆时钟方向为正角度值,顺时钟方向为负角度值。如图顺时钟方向为负角度值。如图6-5所示。所示。图图6-5(2)fillArc(int x,int y,int width,int height,int startAngle,int arcAngle) 画一段弧并且用前景色填充该弧所包含的画一段弧并且用前景色填充该弧所包含的扇形区域,实际上这等于画了一个扇形。扇形区域,实际上这等于画了一个扇形。在在Java中画多边形是用其各个顶

10、点的中画多边形是用其各个顶点的坐标作为参数,并依次画出连接各个顶点坐标作为参数,并依次画出连接各个顶点的线段。画一个多边形的方法依照传递参的线段。画一个多边形的方法依照传递参数的方式不同可分为使用数组传递参数和数的方式不同可分为使用数组传递参数和使用使用Polygon对象传递参数两类。对象传递参数两类。(1)drawPolygon(int xPoints,int yPoints,int nPoints) 画一个非填充画一个非填充型的多边形,其中型的多边形,其中xPoints参数是一个整数参数是一个整数数组,用以存放多边形坐标点的数组,用以存放多边形坐标点的x坐标值,坐标值,yPoints参数存

11、放相应的一组参数存放相应的一组y坐标值,坐标值,nPoints则表示共有几个坐标点。则表示共有几个坐标点。(2)fillPolygon(int xPoints,int yPoints,int nPoints) 画一个填充型的画一个填充型的多边形,其他同上。多边形,其他同上。在上面介绍的画非填充型和填充型多在上面介绍的画非填充型和填充型多边形方法中使用对象传递参数的形式为:边形方法中使用对象传递参数的形式为:(1)drawPolygon(Polygon p)(2)fillPolygon(Polygon p)Java中每一种颜色都看成是由红中每一种颜色都看成是由红(R)、绿()、绿(G)、蓝()、

12、蓝(B)3原色组合而原色组合而成的。因此成的。因此Color类的构造方法采用如下格类的构造方法采用如下格式。式。(1)Color(int r,int g,int b) 其其中每个参数的值都在中每个参数的值都在0255之间,数值越之间,数值越大就表明这种颜色的成份越重。大就表明这种颜色的成份越重。例如(例如(0,0,0)代表黑色,()代表黑色,(255,0,0)代表红色。当然最终在屏幕上是否能显)代表红色。当然最终在屏幕上是否能显示所定义的颜色还取决于客户端系统的调示所定义的颜色还取决于客户端系统的调色板所支持的颜色种类的多少。若客户端色板所支持的颜色种类的多少。若客户端系统的调色板并不支持当前

13、所定义的颜色系统的调色板并不支持当前所定义的颜色值,就会在调色板中挑选最接近的颜色来值,就会在调色板中挑选最接近的颜色来代替。代替。(2)Color(int rgb) 指定一个整型指定一个整型数表示数表示3原色的混合值。其中原色的混合值。其中rgb作为二进作为二进制数的制数的1623位的值代表红色,位的值代表红色,815位代位代表绿色,表绿色,07位代表蓝色。位代表蓝色。为了能使用刚才生成好的为了能使用刚才生成好的Color对象对象来显示文本及绘制图形,需调用来显示文本及绘制图形,需调用Graphics类中的类中的setColor()方法把这个对象设置为系方法把这个对象设置为系统当前所用的绘画

14、颜色,其调用格式为:统当前所用的绘画颜色,其调用格式为:setColor(Color c);例如,想要用蓝色来显示文本,最简例如,想要用蓝色来显示文本,最简单的办法是直接引用标准色的类变量:单的办法是直接引用标准色的类变量:setColor(Color.blue);另外,另外,Java还提供了设置构件背景和还提供了设置构件背景和前景的方法,分别是前景的方法,分别是setBackground()方法方法和和setForeground()方法,它们都被定义在方法,它们都被定义在java.awt.Component类中,因此该方法能类中,因此该方法能被其子类自动继承,其调用格式与被其子类自动继承,其

15、调用格式与setColor()方法相同:方法相同:setBackground(Color c)setForeground(Color c)其中其中setForeground()方法将影响到容方法将影响到容器构件中所有已经用其他任何颜色所绘制器构件中所有已经用其他任何颜色所绘制的图形及显示的文本,把它们一下子都变的图形及显示的文本,把它们一下子都变为该方法所定义的前景颜色,而不需用该为该方法所定义的前景颜色,而不需用该颜色重新一一绘制。颜色重新一一绘制。有有“set”必有相应的必有相应的“get”,Java中还中还提供了提供了getColor()方法(方法(Graphics类中)、类中)、get

16、Background()方法和方法和getForeground()方方法(法(Component类中)来分别获取当前的类中)来分别获取当前的绘图颜色、构件背景及前景颜色的对象。绘图颜色、构件背景及前景颜色的对象。在在Java中提供了一个中提供了一个font类,利用它类,利用它可以定义文本的字体、风格及字号(大可以定义文本的字体、风格及字号(大小),其构造方法如下:小),其构造方法如下:Font(String name, int style, int size)其中第其中第1个参数个参数name为字体名称,如为字体名称,如中文的中文的“宋体宋体”、“楷体楷体”,或是英文的,或是英文的“Times

17、Roman”体、体、“Courier”体等;第体等;第3个参数个参数size表示字体的大小;第表示字体的大小;第2个参数个参数style表示字体的风格,表示字体的风格,Font类中已定义了类中已定义了类 变 量 来 表 示 字 体 的类 变 量 来 表 示 字 体 的 s t y l e 值 , 如值 , 如Font.BOLD(表示粗体)、(表示粗体)、Font.ITALIC(表示斜体)、(表示斜体)、Font.PLAIN(表示普通(表示普通体)。体)。由于它们被定义为整数常量,因此可由于它们被定义为整数常量,因此可以进行相加运算来生成复合以进行相加运算来生成复合style,例如想,例如想让让

18、style即是粗体又是斜体,可以这样写:即是粗体又是斜体,可以这样写:Font fn = new Font(TimesRoman, Font.BOLD+Font.ITALIC, 28);如果定义的字体不存在,系统就会以如果定义的字体不存在,系统就会以缺省字体来替代它。在使用字体之前,不缺省字体来替代它。在使用字体之前,不妨先查看一下系统目前究竟支持哪些字体,妨先查看一下系统目前究竟支持哪些字体,这就要用到这就要用到java.awt.Toolkit类中的类中的getFontlist()方法,它返回系统目前可用的方法,它返回系统目前可用的字体列表,然后就可决定到底选用哪种字字体列表,然后就可决定到底选用哪种字体。例如:体。例如: Toolkit systk = Toolkit.getDefaultToolkit(); String fonts = systk.getFontList();创建了创建了Font对象以后,还要用对象以后,还要用setFont(Font font)方法将所创建的)方法将所创建的Font对象设对象设为当前所用的字体。然后就可以利用为当前所用的字体。然后就可以利用Graphics类中提供的类中提供的drawString()、drawChars()等方法来显示字符串与字符。等方法来显示字符串与字符。文本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论