Graphics类是一个抽象类,可用于在一个可视组件内绘图。Graphics对象包含了绘图所必需包含的信息,其中包括坐标、色彩、字体和剪接板区。绘图在一个二维整数坐标系中进行,该坐标的原点在组件的左上角。X轴在水平方向从左至右增长,Y轴垂直向下增长,如图10-13所示。
图10-13 一个组件在计算机屏幕内的坐标系统
可以使用Graphics类提供的绘图方法画线条、矩形、圆形等图形。该方法如下。
public void paint(Graphics g)
由于Graphics类是一个抽象类,因此不能直接初始化Graphics对象,只能从现有的图形对象或使用Component类的getGraphics( )方法得到Graphics对象。Graphics类包含了大量的方法,对Graphics类可以使用表10-6所示的set/get方法控制绘图的色彩和使用不同字体;Graphics类的各种绘图方法如表10-7所示。
表10-6 Graphics 类的set/get方法
方 法 |
描 述 | ||
public abstract Color getColor( ) |
获得当前图形的色彩 | ||
public abstract void setColor(Color c) |
设置当前图形的色彩 | ||
public abstract Font getFont( ) |
获得当前图形的字体 | ||
public abstract void setFont(Font font) |
设置当前图形的字体 | ||
public FontMetrics getFontMetrics( ) |
获得字体的大小信息 | ||
表10-7 Graphics 类的各种绘图方法 | |||
方 法 |
描 述 |
| |
drawLine(int x1, int y1, int x2, int y2) |
一条从(x1, y1)到(x2, y2)的线段 |
| |
drawRect(int x, int y, int width, int height) |
顶点在(x, y),并以width为宽度、height为高度的一个矩形 |
| |
draw3DRect(int x, int y, int width, int height, boolean raised) |
凸出或凹进的三维矩形 |
| |
drawOval(int x, int y, int width, int height) |
在顶点在(x, y),并以width为宽度、height为高度的矩形内画一个椭圆 |
| |
续上表
方 法 |
描 述 | ||
drawArc(int x, int y, int width, int height, int start, int arc) |
在顶点在(x, y),并以width为宽度、height为高度的矩形内从start到start+arc的角度内画弧 |
| |
drawPolyline(int x[], int y[], int nPoints) |
画一个连接(x[0] , y[0]) ,(x[1] , y[1]),…的连线 |
| |
drawPolygon(Polygon p) |
画一个封闭的多边形 |
| |
drawString(String str, int x, int y) |
从(x, y)处开始写一个串 |
| |
ClearRect(int x, int y, int width, int height) |
用背景颜色填充一个矩形 |
| |
drawImage(Image img , int x, int y,ImageObserver observer) |
从(x, y)处开始显示一个图像,并通知观察器显示进展 |
| |
drawImage(Image img, int x, int y, int width,int height, ImageObserver observer) |
从(x, y)处开始显示一个宽度为width、高度为height的图像并通知观察器显示进展 |
| |
在一个组件上绘制图形,有两种可用的方法:绘图方法,它画出一个对象的边框;填充方法,它用当前的颜色填充对象。在每种类型的方法中,对象的边框也会用当前颜色进行绘制。
方法drawLine( )是用来在两个点之间画一条直线。该方法接收4个参数:起点的x和y坐标以及终点的x和y坐标,如下所示。
drawLine(x1,y1,x2,y2);
这个方法绘制了一条从点(x1,y1)到点(x2,y2)的直线。这条线的宽度被设定成1个像素大小。
有两种矩形可供Graphics方法绘制:常规的矩形和带有圆角的矩形。可以使用绘制边框方式或用当前颜色进行填充的方式来绘制这两种矩形。
绘制常规矩形,使用方法drawRect( )来绘制边框,使用方法fillRect( )来填充图形。
这两种方法都接收以下4个参数。
· 矩形的左上角的x和y坐标。
· 矩形的宽度。
· 矩形的高度。
将如下的语句加入到应用程序中。
Comp2D.drawRect(2,2,335,320);
此语句将一个矩形边框加入到应用程序的框架的外边界内。如果使用fillRect( )方法来代替它,一个实心的矩形会填充大部分的应用程序框架,并且重写带下划线的文本Florida。
具有圆角的矩形需要使用draw( )Round Rect( )和fillRoundRect()方法。它们接收的4个参数与常规矩形的情况一样,在这4个参数后它们还增添了两个新的参数。
最后的这两个参数定义了圆角区域的宽度和高度。该区域越大,角就越圆。通过将这些参数设置得足够大,甚至可以让一个矩形看上去像一个圆形或者一个椭圆形。
多边形可以使用方法drawPolygon( )和fillPolygon( )来绘制。
多边形可以看成是一系列彼此连接在一起的直线:一条线段从起点画到终点,然后将那个终点用作一条新线段的起点,以此类推。
可以用下面两种方法来指定坐标。
· 作为一对整数数组,一个存放了所有的x坐标,另一个存放了所有的y坐标。
· 作为一个Polygon对象,它是使用一个整数数组的x坐标和一个整数数组的y坐标来创建的。
注意:除了x和y坐标,还必须指定多边形的顶点数。不能指定超过顶点数的x和y坐标,也不能是顶点数多于所设定的x和y坐标,否则会产生编译错误。
要创建一个对象,第一步是使用一个newPolygon( )语句来创建一个空的多边形,如下所示。
Polygon Poly=new;
当创建一个Polygon对象之后,第二步用addPoint( )方法将顶点加入进去。使用x和y坐标作为参数并将顶点加入到多边形中,如下所示。
Poly. addPoint(60,65 );
加入所需顶点后,第三步用drawPolygon( )或fill Polygon( )来绘制它。这两种方法只接收一个参数,即该Polygon对象,如下所示。
Comp2D.draw Polygon( poly );
方法drawOval( )和fillOval( )被用来绘制圆和椭圆。
这些方法接收以下4个参数。
· 椭圆的x和y坐标。
· 椭圆的宽度和高度:它与圆具有相同的大小。
椭圆的处理方式与圆角矩形的处理方式相同。
一个弧是椭圆的一部分,在Java中是用画出椭圆的确一个部分来实现的。
弧是用方法drawArc( )和fill Arc( )来绘制的,它接收以下6个参数。
· 椭圆的x和y坐标
· 椭圆的宽度和高度:它与圆圈具有相同的大小。
· 弧开始位置的角度。
· 弧所经过的度数。
前4个参数与椭圆的参数相同,而且功能一致。
弧起始角度的范围是逆时针方向上的0°到359°。在一个环形椭圆上,0°是3点钟的方向,90°是12点钟的方向,180°是9点钟的方向,而270°是6点钟的方向。
弧所经过的度数是逆时针方向上的从0°度到359°的范围,也可以是顺时针方向上的0°到-359°。
弧的填充并不是将两个终点连接起来,而是放入到弧所在椭圆的中央。
下面是一个调用方法drawArc( )的例子。
Comp2D. drawArc(20,25,315,150,5,-190 );
上面的语句绘制了一个椭圆上的弧,它左上角的坐标为(20,25),宽度是315像素,高度是150像素。弧从5°开始,沿着顺时针方向转过了190°。