JavaTM 2 Platform
Standard Ed. 5.0

java.awt
类 Graphics

java.lang.Object
  继承者 java.awt.Graphics
直接已知子类:
DebugGraphics, Graphics2D

public abstract class Graphics
extends Object

Graphics 类是所有图形上下文的抽象基类,允许应用程序可以在组件(已经在各种设备上实现),以及闭屏图像上,进行绘制。

Graphics 对象封装了 Java 支持的基本呈现操作所需的状态信息。此状态信息包括以下属性:

坐标是无限细分的,并且位于输出设备的像素之间。绘制图形轮廓的操作是通过使用像素大小的画笔遍历像素间无限细分路径的操作,画笔从路径上的锚点向下和向右绘制。填充图形的操作是填充图形内部区域无限细分路径操作。呈现水平文本的操作是呈现字符字形完全位于基线坐标之上的上升部分。

图形画笔从要遍历的路径向下和向右绘制。这有以下含义:

所有作为此 Graphics 对象方法的参数而出现的坐标,都是相对于调用该方法前的此 Graphics 对象转换原点的。

所有呈现操作仅修改当前剪贴区所限定区域内的像素,此剪贴区是由用户空间中的 Shape 指定的,并且通过使用 Graphics 对象的程序来控制。此用户剪贴区 被转换到设备空间中,并且与设备剪贴区 组合,后者是通过窗口可见性和设备范围定义的。用户剪贴区和设备剪贴区的组合定义了复合剪贴区,它确定了最终的剪贴区域。用户剪贴区不能由呈现系统修改,以反映得到的复合剪贴区。用户剪贴区只能通过 setClipclipRect 方法更改。所有的绘制或写入都以当前的颜色、当前绘图模式和当前字体完成的。

从以下版本开始:
JDK1.0
另请参见:
Component, clipRect(int, int, int, int), setColor(java.awt.Color), setPaintMode(), setXORMode(java.awt.Color), setFont(java.awt.Font)

构造方法摘要
protected Graphics()
          构造一个新的 Graphics 对象。
 
方法摘要
abstract  void clearRect(int x, int y, int width, int height)
          通过使用当前绘图表面的背景色进行填充来清除指定的矩形。
abstract  void clipRect(int x, int y, int width, int height)
          将当前剪贴区与指定的矩形相交。
abstract  void copyArea(int x, int y, int width, int height, int dx, int dy)
          将组件的区域复制到由 dxdy 指定的距离处。
abstract  Graphics create()
          创建一个新的 Graphics 对象,它是此 Graphics 对象的副本。
 Graphics create(int x, int y, int width, int height)
          基于此 Graphics 对象创建一个新的 Graphics 对象,但是使用新的转换和剪贴区域。
abstract  void dispose()
          释放此图形的上下文并释放它所使用的所有系统资源。
 void draw3DRect(int x, int y, int width, int height, boolean raised)
          绘制指定矩形的 3-D 突出显示边框。
abstract  void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
          绘制一个覆盖指定矩形的圆弧或椭圆弧边框。
 void drawBytes(byte[] data, int offset, int length, int x, int y)
          使用此图形上下文的当前字体和颜色绘制由指定的 byte 数组给定的文本。
 void drawChars(char[] data, int offset, int length, int x, int y)
          使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。
abstract  boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
          绘制指定图像中当前可用的图像。
abstract  boolean drawImage(Image img, int x, int y, ImageObserver observer)
          绘制指定图像中当前可用的图像。
abstract  boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
          绘制指定图像中已缩放到适合指定矩形内部的图像。
abstract  boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
          绘制指定图像中已缩放到适合指定矩形内部的图像。
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)
          绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
abstract  boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
          绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
abstract  void drawLine(int x1, int y1, int x2, int y2)
          在此图形上下文的坐标系统中,使用当前颜色在点 (x1, y1)(x2, y2) 之间画一条线。
abstract  void drawOval(int x, int y, int width, int height)
          绘制椭圆的边框。
abstract  void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
          绘制一个由 xy 坐标数组定义的闭合多边形。
 void drawPolygon(Polygon p)
          绘制由指定的 Polygon 对象定义的多边形边框。
abstract  void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
          绘制由 xy 坐标数组定义的一系列连接线。
 void drawRect(int x, int y, int width, int height)
          绘制指定矩形的边框。
abstract  void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
          用此图形上下文的当前颜色绘制圆角矩形的边框。
abstract  void drawString(AttributedCharacterIterator iterator, int x, int y)
          使用此图形上下文的当前颜色绘制由指定迭代器给定的文本。
abstract  void drawString(String str, int x, int y)
          使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。
 void fill3DRect(int x, int y, int width, int height, boolean raised)
          绘制一个用当前颜色填充的 3-D 突出显示矩形。
abstract  void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
          填充覆盖指定矩形的圆弧或椭圆弧。
abstract  void fillOval(int x, int y, int width, int height)
          使用当前颜色填充外接指定矩形框的椭圆。
abstract  void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
          填充由 xy 坐标数组定义的闭合多边形。
 void fillPolygon(Polygon p)
          用图形上下文的当前颜色填充由指定的 Polygon 对象定义的多边形。
abstract  void fillRect(int x, int y, int width, int height)
          填充指定的矩形。
abstract  void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
          用当前颜色填充指定的圆角矩形。
 void finalize()
          一旦不再引用此图形上下文就释放它。
abstract  Shape getClip()
          获取当前的剪贴区域。
abstract  Rectangle getClipBounds()
          返回当前剪贴区域的边界矩形。
 Rectangle getClipBounds(Rectangle r)
          返回当前剪贴区域的边界矩形。
 Rectangle getClipRect()
          已过时。 从 JDK version 1.1 开始,由 getClipBounds() 取代。
abstract  Color getColor()
          获取此图形上下文的当前颜色。
abstract  Font getFont()
          获取当前字体。
 FontMetrics getFontMetrics()
          获取当前字体的字体规格。
abstract  FontMetrics getFontMetrics(Font f)
          获取指定字体的字体规格。
 boolean hitClip(int x, int y, int width, int height)
          如果指定的矩形区域与当前的剪贴区域相交,则返回 true。
abstract  void setClip(int x, int y, int width, int height)
          将当前的剪贴区设置为由给定坐标指定的矩形。
abstract  void setClip(Shape clip)
          将当前的剪贴区域设置为任意的剪贴形状。
abstract  void setColor(Color c)
          将此图形上下文的当前颜色设置为指定颜色。
abstract  void setFont(Font font)
          将此图形上下文的字体设置为指定字体。
abstract  void setPaintMode()
          设置将此图形上下文的绘图模式,以便通过此图形上下文中的当前颜色来改写目标。
abstract  void setXORMode(Color c1)
          将此图形下文的绘图模式设置为在此图形上下文的当前颜色和新的指定颜色之间交替。
 String toString()
          返回表示此 Graphics 对象值的 String 对象。
abstract  void translate(int x, int y)
          将图形上下文的原点平移到当前坐标系统中的点 (xy)。
 
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

Graphics

protected Graphics()
构造一个新的 Graphics 对象。此构造方法是用于图形上下文的默认构造方法。

因为 Graphics 是一个抽象类,所以应用程序不能直接调用此构造方法。图形上下文从其他图形上下文获取,或者通过在组件上调用 getGraphics 来创建。

另请参见:
create(), Component.getGraphics()
方法详细信息

create

public abstract Graphics create()
创建一个新的 Graphics 对象,它是此 Graphics 对象的副本。

返回:
新的图形上下文,它是此图形上下文的副本。

create

public Graphics create(int x,
                       int y,
                       int width,
                       int height)
基于此 Graphics 对象创建一个新的 Graphics 对象,但是使用新的转换和剪贴区域。新 Graphics 对象的原点平移到指定点 (xy)。其剪贴区域由原始剪贴区域和指定矩形的交集确定。各个参数均在原始 Graphics 对象的坐标系统内进行解释。新图形上下文除以下两方面之外,其他与原始图形上下文相同:

参数:
x - x 坐标。
y - y 坐标。
width - 剪贴矩形的宽度。
height - 剪贴矩形的高度。
返回:
新的图形上下文。
另请参见:
translate(int, int), clipRect(int, int, int, int)

translate

public abstract void translate(int x,
                               int y)
将图形上下文的原点平移到当前坐标系统中的点 (xy)。修改此图形上下文,使其新的原点对应于此图形上下文原始坐标系统中的点 (xy)。在此图形上下文上执行的后续呈现操作使用的所有坐标均相对于这个新原点。

参数:
x - x 坐标。
y - y 坐标。

getColor

public abstract Color getColor()
获取此图形上下文的当前颜色。

返回:
此图形上下文的当前颜色。
另请参见:
Color, setColor(Color)

setColor

public abstract void setColor(Color c)
将此图形上下文的当前颜色设置为指定颜色。使用此图形上下文的所有后续图形操作均使用这个指定的颜色。

参数:
c - 新的呈现颜色。
另请参见:
Color, getColor()

setPaintMode

public abstract void setPaintMode()
设置将此图形上下文的绘图模式,以便通过此图形上下文中的当前颜色来改写目标。这将逻辑像素操作函数设置为绘图模式或改写模式。所有后续呈现操作将使用当前颜色改写目标。


setXORMode

public abstract void setXORMode(Color c1)
将此图形下文的绘图模式设置为在此图形上下文的当前颜色和新的指定颜色之间交替。这指定了逻辑像素操作以 XOR 模式执行,在此模式中像素在当前颜色和指定的 XOR 颜色之间进行交替。

当执行绘制操作时,当前颜色的像素改变为指定的颜色,反之亦然。

颜色为这两种颜色以外的像素以不可预测但可逆的方式改变;如果相同的图形被绘制两次,则所有像素恢复到原始值。

参数:
c1 - XOR 交替颜色

getFont

public abstract Font getFont()
获取当前字体。

返回:
此图形上下文的当前字体。
另请参见:
Font, setFont(Font)

setFont

public abstract void setFont(Font font)
将此图形上下文的字体设置为指定字体。使用此图形上下文的所有后续文本操作均使用此字体。

参数:
font - 字体。
另请参见:
getFont(), drawString(java.lang.String, int, int), drawBytes(byte[], int, int, int, int), drawChars(char[], int, int, int, int)

getFontMetrics

public FontMetrics getFontMetrics()
获取当前字体的字体规格。

返回:
此图形上下文当前字体的字体规格。
另请参见:
getFont(), FontMetrics, getFontMetrics(Font)

getFontMetrics

public abstract FontMetrics getFontMetrics(Font f)
获取指定字体的字体规格。

参数:
f - 指定的字体规格
返回:
指定字体的字体规格。
另请参见:
getFont(), FontMetrics, getFontMetrics()

getClipBounds

public abstract Rectangle getClipBounds()
返回当前剪贴区域的边界矩形。此方法涉及用户剪贴区,此用户剪贴区与设备边界和窗口可见性关联的剪贴区无关。如果以前未设置剪贴区,或者已使用 setClip(null) 清除了剪贴区,则此方法返回 null。该矩形内的坐标相对于此图形上下文的坐标系统原点。

返回:
当前剪贴区域的边界矩形,如果未设置剪贴区,则为 null
从以下版本开始:
JDK1.1
另请参见:
getClip(), clipRect(int, int, int, int), setClip(int, int, int, int), setClip(Shape)

clipRect

public abstract void clipRect(int x,
                              int y,
                              int width,
                              int height)
将当前剪贴区与指定的矩形相交。得到的剪贴区域是当前剪贴区域和指定矩形的交集。如果因为从未设置过剪贴区,或者已使用 setClip(null) 清除了剪贴区而没有当前的剪贴区域,那么指定的矩形则成为新的剪贴区。此方法设置了用户剪贴区,此剪贴区与设备边界和窗口可见性关联的剪贴区无关。此方法只能用来缩小当前剪贴区。要扩大当前的剪贴区,需使用 setClip 方法。呈现操作对剪贴区域的外部没有影响。

参数:
x - 要与剪贴区相交的矩形的 x 坐标
y - 要与剪贴区相交的矩形的 y 坐标
width - 要与剪贴区相交的矩形的宽度
height - 要与剪贴区相交的矩形的高度
另请参见:
setClip(int, int, int, int), setClip(Shape)

setClip

public abstract void setClip(int x,
                             int y,
                             int width,
                             int height)
将当前的剪贴区设置为由给定坐标指定的矩形。此方法设置了用户剪贴区,此剪贴区与设备边界和窗口可见性关联的剪贴区无关。呈现操作对剪贴区域的外部没有影响。

参数:
x - 新剪贴区矩形的 x 坐标。
y - 新剪贴区矩形的 y 坐标。
width - 新剪贴区矩形的宽度。
height - 新剪贴区矩形的高度。
从以下版本开始:
JDK1.1
另请参见:
clipRect(int, int, int, int), setClip(Shape), getClip()

getClip

public abstract Shape getClip()
获取当前的剪贴区域。此方法返回用户剪贴区,此剪贴区与设备边界和窗口可见性关联的剪贴区无关。如果以前未设置剪贴区,或者已使用 setClip(null) 清除了剪贴区,则此方法返回 null

返回:
表示当前剪贴区域的 Shape 对象,如果未设置剪贴区,则为 null
从以下版本开始:
JDK1.1
另请参见:
getClipBounds(), clipRect(int, int, int, int), setClip(int, int, int, int), setClip(Shape)

setClip

public abstract void setClip(Shape clip)
将当前的剪贴区域设置为任意的剪贴形状。不是所有实现 Shape 接口的对象都能用于设置剪贴区。仅有通过 getClip 方法和 Rectangle 对象获得的 Shape 对象是确保被支持的 Shape 对象。此方法设置了用户剪贴区,此剪贴区与设备边界和窗口可见性关联的剪贴区无关。

参数:
clip - 用来设置剪贴形状的 Shape
从以下版本开始:
JDK1.1
另请参见:
getClip(), clipRect(int, int, int, int), setClip(int, int, int, int)

copyArea

public abstract void copyArea(int x,
                              int y,
                              int width,
                              int height,
                              int dx,
                              int dy)
将组件的区域复制到由 dxdy 指定的距离处。此方法从 xy 指定的点向下和向右复制。要将组件的区域向左或向上复制,需要指定负的 dxdy 值。如果源矩形的一部分位于组件边界的外部,或者被别一个窗口或组件遮掩,那么 copyArea 将无法复制相关的像素。通过调用组件的 paint 方法可刷新被省略的区域。

参数:
x - 源矩形的 x 坐标。
y - 源矩形的 y 坐标。
width - 源矩形的宽度。
height - 源矩形的高度。
dx - 复制像素的水平距离。
dy - 复制像素的垂直距离。

drawLine

public abstract void drawLine(int x1,
                              int y1,
                              int x2,
                              int y2)
在此图形上下文的坐标系统中,使用当前颜色在点 (x1, y1)(x2, y2) 之间画一条线。

参数:
x1 - 第一个点的 x 坐标。
y1 - 第一个点的 y 坐标。
x2 - 第二个点的 x 坐标。
y2 - 第二个点的 y 坐标。

fillRect

public abstract void fillRect(int x,
                              int y,
                              int width,
                              int height)
填充指定的矩形。该矩形左边和右边位于 xx + width - 1。顶边和底边位于 yy + height - 1。得到的矩形覆盖的区域宽度为 width 像素,高度为 height 像素。使用图形上下文的当前颜色填充该矩形。

参数:
x - 要填充矩形的 x 坐标。
y - 要填充矩形的 y 坐标。
width - 要填充矩形的宽度。
height - 要填充矩形的高度。
另请参见:
clearRect(int, int, int, int), drawRect(int, int, int, int)

drawRect

public void drawRect(int x,
                     int y,
                     int width,
                     int height)
绘制指定矩形的边框。矩形的左边和右边位于 xx + width。顶边和底边位于 yy + height。使用图形上下文的当前颜色绘制该矩形。

参数:
x - 要绘制矩形的 x 坐标。
y - 要绘制矩形的 y 坐标。
width - 要绘制矩形的宽度。
height - 要绘制矩形的高度。
另请参见:
fillRect(int, int, int, int), clearRect(int, int, int, int)

clearRect

public abstract void clearRect(int x,
                               int y,
                               int width,
                               int height)
通过使用当前绘图表面的背景色进行填充来清除指定的矩形。此操作不使用当前的绘图模式。

从 Java 1.1 开始,离屏图像的背景色可能与系统相关。应用程序应该使用 setColor,后跟 fillRect 来确保离屏图像被清除为指定颜色。

参数:
x - 要清除矩形的 x 坐标。
y - 要清除矩形的 y 坐标。
width - 要清除矩形的宽度。
height - 要清除矩形的高度。
另请参见:
fillRect(int, int, int, int), drawRect(int, int, int, int), setColor(java.awt.Color), setPaintMode(), setXORMode(java.awt.Color)

drawRoundRect

public abstract void drawRoundRect(int x,
                                   int y,
                                   int width,
                                   int height,
                                   int arcWidth,
                                   int arcHeight)
用此图形上下文的当前颜色绘制圆角矩形的边框。矩形的左边和右边分别位于 xx + width。矩形的顶边和底边位于 yy + height

参数:
x - 要绘制矩形的 x 坐标。
y - 要绘制矩形的 y 坐标。
width - 要绘制矩形的宽度。
height - 要绘制矩形的高度。
arcWidth - 4 个角弧度的水平直径。
arcHeight - 4 个角弧度的垂直直径。
另请参见:
fillRoundRect(int, int, int, int, int, int)

fillRoundRect

public abstract void fillRoundRect(int x,
                                   int y,
                                   int width,
                                   int height,
                                   int arcWidth,
                                   int arcHeight)
用当前颜色填充指定的圆角矩形。矩形的左边和右边分别位于 xx + width - 1。矩形的顶边和底边位于 yy + height - 1

参数:
x - 要填充矩形的 x 坐标。
y - 要填充矩形的 y 坐标。
width - 要填充矩形的宽度。
height - 要填充矩形的高度。
arcWidth - 4 个角弧度的水平直径。
arcHeight - 4 个角弧度的垂直直径。
另请参见:
drawRoundRect(int, int, int, int, int, int)

draw3DRect

public void draw3DRect(int x,
                       int y,
                       int width,
                       int height,
                       boolean raised)
绘制指定矩形的 3-D 突出显示边框。矩形的边是突出显示的,从而它们从左上角看上去呈斜面并加亮。

突出显示效果所用的颜色根据当前颜色确定。得到的矩形覆盖的区域为 width + 1 像素宽,height + 1 像素高。

参数:
x - 要绘制矩形的 x 坐标。
y - 要绘制矩形的 y 坐标。
width - 要绘制矩形的宽度。
height - 要绘制矩形的高度。
raised - 一个用于确定矩形是凸出平面显示还是凹入平面显示的 boolean 值。
另请参见:
fill3DRect(int, int, int, int, boolean)

fill3DRect

public void fill3DRect(int x,
                       int y,
                       int width,
                       int height,
                       boolean raised)
绘制一个用当前颜色填充的 3-D 突出显示矩形。矩形的边是突出显示的,从而它们从左上角看上去呈斜面并加亮。突出显示效果所用的颜色根据当前颜色确定。

参数:
x - 要填充矩形的 x 坐标。
y - 要填充矩形的 y 坐标。
width - 要填充矩形的宽度。
height - 要填充矩形的高度。
raised - 一个用于确定矩形是凸出平面显示还是凹入平面显示的 boolean 值。
另请参见:
draw3DRect(int, int, int, int, boolean)

drawOval

public abstract void drawOval(int x,
                              int y,
                              int width,
                              int height)
绘制椭圆的边框。得到的是一个圆或椭圆,它恰好适合放在由 xywidthheight 参数指定的矩形内。

椭圆覆盖区域的宽度为 width + 1 像素,高度为 height + 1 像素。

参数:
x - 要绘制椭圆的左上角的 x 坐标。
y - 要绘制椭圆的左上角的 y 坐标。
width - 要绘制椭圆的宽度。
height - 要绘制椭圆的高度。
另请参见:
fillOval(int, int, int, int)

fillOval

public abstract void fillOval(int x,
                              int y,
                              int width,
                              int height)
使用当前颜色填充外接指定矩形框的椭圆。

参数:
x - 要填充椭圆的左上角的 x 坐标。
y - 要填充椭圆的左上角的 y 坐标。
width - 要填充椭圆的宽度。
height - 要填充椭圆的高度。
另请参见:
drawOval(int, int, int, int)

drawArc

public abstract void drawArc(int x,
                             int y,
                             int width,
                             int height,
                             int startAngle,
                             int arcAngle)
绘制一个覆盖指定矩形的圆弧或椭圆弧边框。

得到的弧由 startAngle 开始,并以当前颜色扩展 arcAngle 度。角度的 0 度位于 3 点钟位置。正值指示逆时针旋转,负值则指示顺时针旋转。

弧的中心是矩形的中心,此矩形的原点为 (xy),大小由 widthheight 参数指定。

得到的弧覆盖的区域宽度为 width + 1 像素,高度为 height + 1 像素。

角度是相对于外接矩形的非正方形区域指定的,例如 45 度角始终落在从椭圆中心到外接矩形右上角的连线上。因此,如果外接矩形在一个轴上远远长于另一个轴,则到弧段的起点和结束点的角度沿着边框长轴会发生更大的偏斜。

参数:
x - 要绘制弧的左上角的 x 坐标。
y - 要绘制弧的左上角的 y 坐标。
width - 要绘制弧的宽度。
height - 要绘制弧的高度。
startAngle - 开始角度。
arcAngle - 相对于开始角度而言,弧跨越的角度。
另请参见:
fillArc(int, int, int, int, int, int)

fillArc

public abstract void fillArc(int x,
                             int y,
                             int width,
                             int height,
                             int startAngle,
                             int arcAngle)
填充覆盖指定矩形的圆弧或椭圆弧。

得到的弧由 startAngle 开始,并跨越 arcAngle 角度。角度的 0 度位于 3 点钟位置。正值指示逆时针旋转,负值则指示顺时针旋转。

弧的中心是矩形的中心,此矩形的原点为 (xy),大小由 widthheight 参数指定。

得到的弧覆盖的区域宽度为 width + 1 像素,高度为 height + 1 像素。

角度是相对于外接矩形的非正方形区域指定的,例如 45 度角始终落在从椭圆中心到外接矩形右上角的连线上。因此,如果外接矩形在一个轴上远远长于另一个轴,则到弧段的起点和结束点的角度沿着边框长轴会发生更大的偏斜。

参数:
x - 要填充弧的左上角的 x 坐标。
y - 要填充弧的左上角的 y 坐标。
width - 要填充弧的宽度。
height - 要填充弧的高度。
startAngle - 开始角度。
arcAngle - 相对于开始角度而言,弧跨越的角度。
另请参见:
drawArc(int, int, int, int, int, int)

drawPolyline

public abstract void drawPolyline(int[] xPoints,
                                  int[] yPoints,
                                  int nPoints)
绘制由 xy 坐标数组定义的一系列连接线。每对 (xy) 坐标定义了一个点。如果第一个点和最后一个点不同,则图形不是闭合的。

参数:
xPoints - x 点数组
yPoints - y 点数组
nPoints - 点的总数
从以下版本开始:
JDK1.1
另请参见:
drawPolygon(int[], int[], int)

drawPolygon

public abstract void drawPolygon(int[] xPoints,
                                 int[] yPoints,
                                 int nPoints)
绘制一个由 xy 坐标数组定义的闭合多边形。每对 (xy) 坐标定义了一个点。

此方法绘制由 nPoint 个线段定义的多边形,其中前面的 nPoint - 1 个线段是当 1 ≤ i ≤ nPoints 时,从 (xPoints[i - 1], yPoints[i - 1])(xPoints[i], yPoints[i]) 的线段。如果最后一个点和第一个点不同,则图形会通过在这两点间绘制一条线段来自动闭合。

参数:
xPoints - x 坐标数组。
yPoints - y 坐标数组。
nPoints - 点的总数。
另请参见:
fillPolygon(int[], int[], int), drawPolyline(int[], int[], int)

drawPolygon

public void drawPolygon(Polygon p)
绘制由指定的 Polygon 对象定义的多边形边框。

参数:
p - 要绘制的多边形。
另请参见:
fillPolygon(int[], int[], int), drawPolyline(int[], int[], int)

fillPolygon

public abstract void fillPolygon(int[] xPoints,
                                 int[] yPoints,
                                 int nPoints)
填充由 xy 坐标数组定义的闭合多边形。

此方法绘制由 nPoint 个线段定义的多边形,其中前面的 nPoint - 1 个线段是当 1 ≤ i ≤  时,从 (xPoints[i - 1], yPoints[i - 1])(xPoints[i], yPoints[i]) 的线段。如果最后一个点和第一个点不同,则图形会通过在这两点间绘制一条线段来自动闭合。

多边形内部的区域使用奇偶填充规则定义,此规则也称为交替填充规则。

参数:
xPoints - x 坐标数组。
yPoints - y 坐标数组。
nPoints - 点的总数。
另请参见:
drawPolygon(int[], int[], int)

fillPolygon

public void fillPolygon(Polygon p)
用图形上下文的当前颜色填充由指定的 Polygon 对象定义的多边形。

多边形内部的区域使用奇偶填充规则定义,此规则也称为交替填充规则。

参数:
p - 要填充的多边形。
另请参见:
drawPolygon(int[], int[], int)

drawString

public abstract void drawString(String str,
                                int x,
                                int y)
使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。最左侧字符的基线位于此图形上下文坐标系统的 (xy) 位置处。

参数:
str - 要绘制的 string。
x - x 坐标。
y - y 坐标。
另请参见:
drawBytes(byte[], int, int, int, int), drawChars(char[], int, int, int, int)

drawString

public abstract void drawString(AttributedCharacterIterator iterator,
                                int x,
                                int y)
使用此图形上下文的当前颜色绘制由指定迭代器给定的文本。迭代器必须为每个字符指定字体。最左侧字符的基线位于此图形上下文坐标系统的 (xy) 位置处。

参数:
iterator - 要绘制其文本的迭代器
x - x 坐标。
y - y 坐标。
另请参见:
drawBytes(byte[], int, int, int, int), drawChars(char[], int, int, int, int)

drawChars

public void drawChars(char[] data,
                      int offset,
                      int length,
                      int x,
                      int y)
使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。首字符的基线位于此图形上下文坐标系统的 (xy) 位置处。

参数:
data - 要绘制的字符数组
offset - 数据的初始偏移量
length - 要绘制的字符数
x - 文本基线的 x 坐标
y - 文本基线的 y 坐标
另请参见:
drawBytes(byte[], int, int, int, int), drawString(java.lang.String, int, int)

drawBytes

public void drawBytes(byte[] data,
                      int offset,
                      int length,
                      int x,
                      int y)
使用此图形上下文的当前字体和颜色绘制由指定的 byte 数组给定的文本。首字符的基线位于此图形上下文坐标系统的 (xy) 位置处。

参数:
data - 要绘制的数据
offset - 数据的起始偏移量
length - 要绘制的字节数
x - 文本基线的 x 坐标
y - 文本基线的 y 坐标
另请参见:
drawChars(char[], int, int, int, int), drawString(java.lang.String, int, int)

drawImage

public abstract boolean drawImage(Image img,
                                  int x,
                                  int y,
                                  ImageObserver observer)
绘制指定图像中当前可用的图像。图像的左上角位于该图形上下文坐标空间的 (xy)。图像中的透明像素不影响该处已存在的像素。

此方法在任何情况下都立刻返回,甚至在整个图像尚未装入,并且它还没有为当前输出设备完成抖动和转换的情况下也是如此。

如果图像已经完全装入,并且其像素不再发生改变,则 drawImage 返回 true。否则 drawImage 返回 false,并且随着更多的图像可用或者到了绘制动画另一帧的时候,装入图像的进程就会通知指定的图像观察者。

参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
x - x 坐标。
y - y 坐标。
observer - 当转换了更多图像时要通知的对象。
返回:
如果图像像素仍在改变,则返回 false;否则返回 true
另请参见:
Image, ImageObserver, ImageObserver.imageUpdate(java.awt.Image, int, int, int, int, int)

drawImage

public abstract boolean drawImage(Image img,
                                  int x,
                                  int y,
                                  int width,
                                  int height,
                                  ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。

图像绘制在此图形上下文坐标空间的指定矩形内部,并且如果需要,则进行缩放。透明像素不影响该处已存在的像素。

此方法在任何情况下都立刻返回,甚至在整个图像没有为当前输出设备完成缩放、抖动或转换的情况下也是如此。如果当前的输出表示尚未完成,则 drawImage 返回 false。随着更多的图像可用,装入图像的进程将通过调用图像观察者的 imageUpdate 方法来通知它。

图像的缩放版本不一定立刻是可用的,因为已经为此输出设备构造了图像的非缩放版本。每种大小的图像可以被分别缓存,并由各自图像产生序列中的原始数据生成。

参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
x - x 坐标。
y - y 坐标。
width - 矩形的宽度。
height - 矩形的高度。
observer - 当转换了更多图像时要通知的对象。
返回:
如果图像像素仍在改变,则返回 false;否则返回 true
另请参见:
Image, ImageObserver, ImageObserver.imageUpdate(java.awt.Image, int, int, int, int, int)

drawImage

public abstract boolean drawImage(Image img,
                                  int x,
                                  int y,
                                  Color bgcolor,
                                  ImageObserver observer)
绘制指定图像中当前可用的图像。图像的左上角位于该图形上下文坐标空间的 (xy)。以指定的背景色绘制透明像素。

此操作等同于用给定颜色填充指定图像宽度和高度的矩形,然后在其上绘制图像,但是可能更为高效。

此方法在任何情况下都立刻返回,甚至在整个图像尚未装入,并且它还没有为当前输出设备完成抖动和转换的情况下也是如此。

如果图像已经完全装入,并且其像素不再发生改变,则 drawImage 返回 true。否则 drawImage 返回 false,并且随着更多的图像可用或者到了绘制动画另一帧的时候,装入图像的进程就会通知指定的图像观察者。

参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
x - x 坐标。
y - y 坐标。
bgcolor - 在图像非透明部分下绘制的背景色。
observer - 当转换了更多图像时要通知的对象。
返回:
如果图像像素仍在改变,则返回 false;否则返回 true
另请参见:
Image, ImageObserver, ImageObserver.imageUpdate(java.awt.Image, int, int, int, int, int)

drawImage

public abstract boolean drawImage(Image img,
                                  int x,
                                  int y,
                                  int width,
                                  int height,
                                  Color bgcolor,
                                  ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。

图像绘制在此图形上下文坐标空间的指定矩形内部,并且如果需要,则进行缩放。以指定的背景色绘制透明像素。此操作等同于用给定颜色填充指定图像宽度和高度的矩形,然后在其上绘制图像,但是可能更为高效。

此方法在任何情况下都立刻返回,甚至在整个图像没有为当前输出设备完成缩放、抖动或转换的情况下也是如此。如果当前的输出表示尚未完成,则 drawImage 返回 false。随着更多的图像可用,装入图像的进程通知指定的图像观察者。

图像的缩放版本不一定立刻是可用的,因为已经为此输出设备构造了图像的非缩放版本。每种大小的图像可以被分别缓存,并由各自图像产生序列中的原始数据生成。

参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
x - x 坐标。
y - y 坐标。
width - 矩形的宽度。
height - 矩形的高度。
bgcolor - 在图像非透明部分下绘制的背景色。
observer - 当转换了更多图像时要通知的对象。
返回:
如果图像像素仍在改变,则返回 false;否则返回 true
另请参见:
Image, ImageObserver, ImageObserver.imageUpdate(java.awt.Image, int, int, int, int, int)

drawImage

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。随着更多的图像可用,装入图像的进程通知指定的图像观察者。

此方法总是用图像的非缩放版本来呈现缩放的矩形,并且动态地执行所需的缩放。此操作不使用图像的缓存的、缩放版本。执行图像从源到目标的缩放,这样源矩形的第一个坐标被映射到目标矩形的第一个坐标,第二个源坐标被映射到第二个目标坐标。按需要缩放和翻转子图像以保持这些映射关系。

参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
dx1 - 目标矩形第一个角的 x 坐标。
dy1 - 目标矩形第一个角的 y 坐标。
dx2 - 目标矩形第二个角的 x 坐标。
dy2 - 目标矩形第二个角的 y 坐标。
sx1 - 源矩形第一个角的 x 坐标。
sy1 - 源矩形第一个角的 y 坐标。
sx2 - 源矩形第二个角的 x 坐标。
sy2 - 源矩形第二个角的 y 坐标。
observer - 当缩放并转换了更多图像时要通知的对象。
返回:
如果图像像素仍在改变,则返回 false;否则返回 true
从以下版本开始:
JDK1.1
另请参见:
Image, ImageObserver, ImageObserver.imageUpdate(java.awt.Image, int, int, int, int, int)

drawImage

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。随着更多的图像可用,装入图像的进程通知指定的图像观察者。

此方法总是用图像的非缩放版本来呈现缩放的矩形,并且动态地执行所需的缩放。此操作不使用图像的缓存的、缩放版本。执行图像从源到目标的缩放,这样源矩形的第一个坐标被映射到目标矩形的第一个坐标,第二个源坐标被映射到第二个目标坐标。按需要缩放和翻转子图像以保持这些映射关系。

参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
dx1 - 目标矩形第一个角的 x 坐标。
dy1 - 目标矩形第一个角的 y 坐标。
dx2 - 目标矩形第二个角的 x 坐标。
dy2 - 目标矩形第二个角的 y 坐标。
sx1 - 源矩形第一个角的 x 坐标。
sy1 - 源矩形第一个角的 y 坐标。
sx2 - 源矩形第二个角的 x 坐标。
sy2 - 源矩形第二个角的 y 坐标。
bgcolor - 在图像非透明部分下绘制的背景色。
observer - 当缩放并转换了更多图像时要通知的对象。
返回:
如果图像像素仍在改变,则返回 false;否则返回 true
从以下版本开始:
JDK1.1
另请参见:
Image, ImageObserver, ImageObserver.imageUpdate(java.awt.Image, int, int, int, int, int)

dispose

public abstract void dispose()
释放此图形的上下文并释放它所使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics 对象。

Java 程序运行时,可以在短时间内创建大量的 Graphics 对象。尽管垃圾回收器的终止进程也能够进行相同的系统资源释放,但是最好通过调用此方法来手工释放相关资源,而不依靠终止进程,因为它需要很长时间才能结束运行。

作为组件 paintupdate 方法的参数所提供的 Graphics 对象,在这些方法返回时将被系统自动释放。为了提高效率,仅当所使用的 Graphics 对象是由组件或另一个 Graphics 对象直接创建时,程序员才应在使用完此 Graphics 后调用 dispose

另请参见:
finalize(), Component.paint(java.awt.Graphics), Component.update(java.awt.Graphics), Component.getGraphics(), create()

finalize

public void finalize()
一旦不再引用此图形上下文就释放它。

覆盖:
Object 中的 finalize
另请参见:
dispose()

toString

public String toString()
返回表示此 Graphics 对象值的 String 对象。

覆盖:
Object 中的 toString
返回:
此图形上下文的字符串表示形式。

getClipRect

@Deprecated
public Rectangle getClipRect()
已过时。 从 JDK version 1.1 开始,由 getClipBounds() 取代。

返回当前剪贴区域的边界矩形。

返回:
当前剪贴区域的边界矩形,如果未设置剪贴区,则返回 null

hitClip

public boolean hitClip(int x,
                       int y,
                       int width,
                       int height)
如果指定的矩形区域与当前的剪贴区域相交,则返回 true。指定矩形区域的坐标位于用户坐标空间中,并且相对于此图形上下文的坐标系统原点。此方法可以使用快速计算出结果的算法,但此算法有时甚至在指定矩形区域与剪贴区域不相交时也返回 true。因此,所采用的指定算法可能牺牲准确性来换取速度,但是除非能够确保指定的矩形区域与当前剪贴区不相交,否则永远不会返回 false。此方法使用的剪贴区域可以表示通过此图形上下文的 clip 方法指定的用户剪贴区的交集,也可以表示与设备或图像边界和窗口可见性相关联的剪贴区。

参数:
x - 要与剪贴区测试的矩形的 x 坐标
y - 要与剪贴区测试的矩形的 y 坐标
width - 要与剪贴区测试的矩形的宽度
height - 要与剪贴区测试的矩形的高度
返回:
如果指定的矩形与当前剪贴区边界相交,则返回 true;否则返回 false

getClipBounds

public Rectangle getClipBounds(Rectangle r)
返回当前剪贴区域的边界矩形。该矩形内的坐标相对于此图形上下文的坐标系统原点。此方法与 getClipBounds 不同,后者使用现有的矩形而不是分配一个新矩形。此方法涉及用户剪贴区,此用户剪贴区与设备边界和窗口可见性关联的剪贴区无关。如果以前未设置剪贴区,或者已使用 setClip(null) 清除了剪贴区,则此方法返回指定的 Rectangle

参数:
r - 要将当前剪贴区域复制到的矩形。此矩形的所有当前值均被覆盖。
返回:
当前剪贴区域的边界矩形。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策