java.lang.Object | +----java.awt.Graphics
Graphics 类是所有图形上下文的抽象基类,这个上下文允许应用将图形绘制到由不同设备实现的组件上,以及绘制到空闲屏幕的映像中。
一个 Graphics 对象封装有 Java 所支持的基本绘图操作所需的状态信息。此状态信息包括下列属性:
组件对象。
setXORMode) 。
坐标是无限薄的并且位于输出设备的像素之间。绘制图形轮廓的操作由贯穿一条像素间的无限薄的路线的操作实现,该路线是用像素大小的笔沿图形轮廓路线亮点右边画下的。填充图形的操作由填充图形无限薄路线内部的操作实现。绘制水平文本的操作是由全部在基线坐标上绘制递增比例的字符凸凹的操作的实现的。
绘图笔从它所贯穿的路线的左部画到右部。这有下列含义:
所有作为该 Graphics 对象方法的参数出现的坐标,都是相对于方法调用前的 Graphics 对象的平移原点的坐标。所有的绘图操作,仅仅改变由图形上下文的当前剪贴区和用于创建
Graphics 对象的组件范围共同限定的区域中的像素。所有的绘制和写入都以当前颜色、当前的绘图模式和当前的字体进行。
Graphics 对象。
dx 和 dy
指定的位移距离处。
Graphics 对象,它是该
Graphics 对象的副本。
Graphics 对象的新的
Graphics 对象,但是有一个新的平移和剪贴区域。
(x1 ,
y1) 和 (x2 , y2) 之间的线。
Polygon 对象定义的多边形的轮廓。
Graphics 对象的数值的
String 对象。
protected Graphics()
Graphics 对象。
该构造子是图形上下文的缺省构造子。
由于 Graphics 是一个抽象类,应用不能直接调用该构造子。图形上下文是从其他图形上下文获得的或是通过在一个组件上调用
getGraphics 创建的。
public abstract Graphics create()
Graphics 对象,它是该
Graphics 对象的副本。
public Graphics create(int x,
int y,
int width,
int height)
Graphics 对象的新的
Graphics 对象,但是有一个新的平移和剪贴区域。新的
Graphics 对象将它的原点平移到指定的点
(x , y) 处。它的剪贴区域由初始的剪贴区域和指定矩形的交集确定。参数都在初始的 Graphics 对象的坐标系中解释。新的图形上下文都根据初始的上下文确定,除了在下列两种情况:
0 , 0)
与在初始的图形上下文中的 (x , y) 相同。
0 , 0) ,并且它的大小由 width 和 height 参数指定。
public abstract void translate(int x,
int y)
public abstract Color getColor()
public abstract void setColor(Color c)
public abstract void setPaintMode()
public abstract void setXORMode(Color c1)
当绘图操作执行时,当前颜色的像素改变为指定的颜色,反之亦然。
这两种颜色以外的颜色的像素以一种不可预测的但是可逆的方式改变;如果相同的图形绘制两次,那么所有的像素将恢复到它们原先的数值。
public abstract Font getFont()
public abstract void setFont(Font font)
public FontMetrics getFontMetrics()
public abstract FontMetrics getFontMetrics(Font f)
public abstract Rectangle getClipBounds()
public abstract void clipRect(int x,
int y,
int width,
int height)
public abstract void setClip(int x,
int y,
int width,
int height)
public abstract Shape getClip()
Shape 对象。
public abstract void setClip(Shape clip)
Shape 接口实现的对象都可以被用来设置剪贴区。确保被支持的 Shape 对象仅有通过 getClip
和通过 Rectangle 对象获得的 Shape 对象。
public abstract void copyArea(int x,
int y,
int width,
int height,
int dx,
int dy)
dx 和 dy
指定的位移距离处。从由 x 和 y 指定的点处,复制到右下方。若要将组件区域复制到左边或上方,则须为 dx
或 dy 指定一个负值。如果源矩形的一部分处于组件所限定的矩形外,或被另一个窗口或组件掩盖,那么 copyArea 方法就不能复制有关的像素。被忽略的区域可以通过调用组件的 paint 方法来刷新。
public abstract void drawLine(int x1,
int y1,
int x2,
int y2)
(x1 ,
y1) 和 (x2 , y2) 之间的线。
public abstract void fillRect(int x,
int y,
int width,
int height)
x 和 x + width - 1 。顶部边沿和底部边沿分别为 y 和
y + height - 1 。结果矩形覆盖了一个宽 width 个像素高
height 个像素的区域。使用图形上下文的当前颜色来填充矩形。
public void drawRect(int x,
int y,
int width,
int height)
x 和 x + width 。顶部边沿和底部边沿分别为 y
和 y + height 。该矩形是使用图形上下文的当前颜色绘制的。
public abstract void clearRect(int x,
int y,
int width,
int height)
从 Java 1.1 开始,空闲屏幕图象的背景颜色就可能是与系统相关的。应用程序应当在 fillRect 方法后紧接着使用
setColor 方法来确保空闲屏幕的图像被清除为指定的颜色。
public abstract void drawRoundRect(int x,
int y,
int width,
int height,
int arcWidth,
int arcHeight)
x 和 x + width 。矩形的顶部边沿和底部边沿分别为 y
和 y + height 。
public abstract void fillRoundRect(int x,
int y,
int width,
int height,
int arcWidth,
int arcHeight)
x 和 x + width - 1 。矩形的顶部边沿和底部边沿分别为 y 和
y + height - 1 。
public void draw3DRect(int x,
int y,
int width,
int height,
boolean raised)
用于产生突出效果的颜色是根据当前颜色来确定的。结果矩形覆盖了一个
width + 1 个像素宽、
height + 1 个像素高的区域。
public void fill3DRect(int x,
int y,
int width,
int height,
boolean raised)
public abstract void drawOval(int x,
int y,
int width,
int height)
x ,y ,width 和
height 参数指定的矩形。
该椭圆覆盖了一个 width + 1 个像素宽和
height + 1 个像素高的区域。
public abstract void fillOval(int x,
int y,
int width,
int height)
public abstract void drawArc(int x,
int y,
int width,
int height,
int startAngle,
int arcAngle)
结果弧由 startAngle 开始并扩展 arcAngle
度,并且使用当前颜色。角度的解释为: 0 度是在时针 3
点钟的位置。正值表示顺时针旋转,而负值表示逆时针旋转。
弧的中心在矩形的中心,它的原点为 (x , y)
并且它的大小由 width 和 height 参数指定。
结果弧覆盖了一个 width + 1 个像素宽、
height + 1 个像素高的区域。
public abstract void fillArc(int x,
int y,
int width,
int height,
int startAngle,
int arcAngle)
结果弧由 startAngle 开始并扩展 arcAngle 度。角度的解释为: 0 度是在时针 3
点钟的位置。正值表示顺时针旋转,而负值表示逆时针旋转。
弧的中心在矩形的中心,它的原点为 (x , y)
并且它的大小由 width 和 height 参数指定。
结果弧覆盖了一个 width + 1 个像素宽、
height + 1 个像素高的区域。
public abstract void drawPolyline(int xPoints[],
int yPoints[],
int nPoints)
public abstract void drawPolygon(int xPoints[],
int yPoints[],
int nPoints)
该方法绘制由 nPoint 条线段定义的多边形,其中前
nPoint - 1 条线段是从
(xPoints[i - 1] , yPoints[i - 1])
到 (xPoints[i] , yPoints[i]) ,当
1 ≤ i ≤ nPoints 。
如果最后一个点和第一个点不相同时,图形通过绘制一条连接这两点的直线来自动闭合。
x 坐标数组。
y 坐标数组。
public void drawPolygon(Polygon p)
Polygon 对象定义的多边形的轮廓。
public abstract void fillPolygon(int xPoints[],
int yPoints[],
int nPoints)
该方法绘制由 nPoint 条线段定义的多边形,其中前
nPoint - 1 条线段是从
(xPoints[i - 1] , yPoints[i - 1])
到 (xPoints[i] , yPoints[i]) ,当
1 ≤ i ≤ nPoints 。
如果最后一个点和第一个点不相同时,图形通过绘制一条连接这两点的直线来自动形成闭合。
多边形内的区域使用奇偶填充规则和交替填充规则来定义。
x 坐标数组。
y 坐标数组。
public void fillPolygon(Polygon p)
多边形内的区域使用奇偶填充规则和交替填充规则来定义。
public abstract void drawString(String str,
int x,
int y)
public void drawChars(char data[],
int offset,
int length,
int x,
int y)
public void drawBytes(byte data[],
int offset,
int length,
int x,
int y)
public abstract boolean drawImage(Image img,
int x,
int y,
ImageObserver observer)
在任何情况下该方法都立刻返回,甚至在整个图像并没有被装入,并且它还没有被进行抖动和转换到当前的输出设备的情况下。
如果图像没有被完全装入,那么 drawImage 方法将返回
false 。当大多数图像可用时,绘制图像的过程将通知指定的图像观察者。
public abstract boolean drawImage(Image img,
int x,
int y,
int width,
int height,
ImageObserver observer)
图像绘制在该图形上下文坐标空间指定的矩形中,并且根据需要按比例缩放。透明的像素不会影响已在该处的像素。
在任何情况下该方法都立刻返回,甚至在整个图像没有为当前的输出设备况下缩放、抖动或转换的情况下都照样返回。如果当前的输出表示没有完成,那么 drawImage 方法返回 false 。当大多数图像可用时,绘制图像的过程将通过调用它的
imageUpdate 方法来通知观察者。
图像按比例缩放出的版本没有必要立刻成为可用的,因为图像的非按比例缩放的版本已经为该输出设备构造出。在不同图像的生产序列中,每种尺寸的图像可以分别储存,并且可以从初始数据当中生成。
public abstract boolean drawImage(Image img,
int x,
int y,
Color bgcolor,
ImageObserver observer)
该操作等价于用给定的颜色填充指定图像的宽和高的矩形,然后在它的顶部绘制该图像,但是可能更有效。
在任何情况下该方法都立刻返回,甚至在整个图像没有为当前的输出设备装入、抖动或转换的情况下都照样返回。
如果图像没有被完全装入,那么 drawImage 方法将返回
false 。当大多数图像可用时,绘制图像的过程将通知指定的图像观察者。
public abstract boolean drawImage(Image img,
int x,
int y,
int width,
int height,
Color bgcolor,
ImageObserver observer)
图像绘制在该图形上下文坐标空间指定的矩形中,并且根据需要按比例缩放。用指定的背景颜色绘制透明像素。该操作等价于用给定的颜色填充指定图像的宽和高的矩形,然后在它的顶部绘制该图像,但是可能更有效。
在任何情况下该方法都立刻返回,甚至在整个图像没有为当前输出设备缩放、抖动或转换的情况照样返回。如果当前的输出表示没有完成,那么 drawImage 方法返回 false 。当大多数图像可用时,绘制图像的过程将通知指定的图像观察者。
图像按比例缩放出的版本没有必要立刻成为可用的,因为图像的非按比例缩放的版本已经为该输出设备构造出。在不同图像的生产序列中,每个尺寸的图像可以被分别储存,并且可以从初始数据当中生成。
public abstract boolean drawImage(Image img,
int dx1,
int dy1,
int dx2,
int dy2,
int sx1,
int sy1,
int sx2,
int sy2,
ImageObserver observer)
在任何情况下该方法都立刻返回,甚至在整个图像没有为当前的输出设备缩放、抖动或转换的情况下照样返回。如果当前的输出表示没有完成,那么 drawImage 方法返回 false 。当大多数图像可用时,绘制图像的过程将通知指定的图像观察者。
该方法总是使用图像的非按比例缩放的版本,来绘制被按比例缩放的矩形,并且在画布上按所需的比例进行缩放。对于该操作不使用图像被储存的、按比例缩放的版本。图像从源到目标的缩放是这样进行的,源矩形的第一个坐标被映射到目标矩形的第一个坐标,第二个源坐标被映射到第二个目标坐标。子图像被按比例缩放并根据需要进行翻转来保留这些映射。
public abstract boolean drawImage(Image img,
int dx1,
int dy1,
int dx2,
int dy2,
int sx1,
int sy1,
int sx2,
int sy2,
Color bgcolor,
ImageObserver observer)
用指定的背景颜色绘制透明像素。该操作等价于用给定的颜色填充指定图像的宽和高的矩形,然后在它的顶部绘制该图像,但是可能更有效。
在任何情况下该方法都立刻返回,甚至在整个图像没有为当前的输出设备缩放、抖动或被转换情况下照样返回。如果当前的输出表示没有完成,那么 drawImage 方法返回 false 。当大多数图像可用时,绘制图像的过程将通知指定的图像观察者。
该方法总是使用图像的非按比例缩放的版本,来绘制被按比例缩放的矩形,并且在画布上按所需的比例进行缩放。对于该操作不使用图像被储存的、按比例缩放的版本。图像从源到目标的缩放是这样进行的,源矩形的第一个坐标被映射到目标矩形的第一个坐标,第二个源坐标被映射到第二个目标坐标。子图像被按比例缩放并根据需要进行翻转来保留这些映射。
public abstract void dispose()
dispose 方法被调用后, Graphics
对象将不能被使用。
当 Java 程序运行时,在很短的时间范围内可以创建许多
Graphics 对象。尽管垃圾回收站的终结过程也会撤消相同的系统资源,但是最好还是通过调用该方法手工释放相关资源,而不依靠终结过程,因为它在长时间内都不会运行以完成该工作。
作为组件的 paint 和 update
方法的参数提供的图形对象,当这些方法返回时由系统自动释放。为了效率,仅当所使用的 Graphics 对象是由组件或另一个
Graphics 对象直接创建的,当使用完后程序应当调用
dispose 方法。
public void finalize()
public String toString()
Graphics 对象的数值的
String 对象。
public Rectangle getClipRect()
getClipBounds() 方法替换。