Module java.desktop
Package java.awt

Class Graphics

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

public abstract class Graphics extends Object
Graphics类是所有图形上下文的抽象基类,允许应用程序在各种设备上绘制组件,以及在离屏图像上绘制。

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

  • 要绘制的Component对象。
  • 用于渲染和裁剪坐标的平移原点。
  • 当前裁剪区域。
  • 当前颜色。
  • 当前字体。
  • 当前逻辑像素操作函数(XOR或Paint)。
  • 当前XOR交替颜色(参见setXORMode(java.awt.Color))。

坐标是无限细的,位于输出设备的像素之间。绘制图形轮廓的操作通过在像素之间以像素大小的笔绘制无限细路径来实现,该笔从路径上的锚点向下和向右悬挂。填充图形的操作通过填充该无限细路径的内部来实现。渲染水平文本的操作将字符字形的上升部分完全呈现在基线坐标之上。

图形笔从其遍历的路径向下和向右悬挂。这具有以下含义:

  • 如果绘制覆盖给定矩形的图形,则与填充由相同矩形限定的图形相比,该图形在右侧和底部边缘占用额外的一行像素。
  • 如果在与文本行基线相同的 坐标上绘制水平线,则该线完全绘制在文本下方,除了任何下行字符。

Graphics对象的方法的参数中出现的所有坐标都被视为相对于调用方法之前的此Graphics对象的平移原点。

所有渲染操作仅修改位于当前裁剪区域边界内的像素,该区域由用户空间中的Shape指定,并由使用Graphics对象的程序控制。此用户裁剪被转换为设备空间,并与设备裁剪组合,后者由窗口的可见性和设备范围定义。用户裁剪和设备裁剪的组合定义了复合裁剪,它确定最终的裁剪区域。用户裁剪不能被渲染系统修改以反映生成的复合裁剪结果。用户裁剪只能通过setClipclipRect方法进行更改。所有绘图或写入都使用当前颜色,在当前绘制模式和当前字体中进行。

自:
1.0
参见:
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    构造一个新的Graphics对象。
  • Method Summary

    Modifier and Type
    Method
    Description
    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对象的副本。
    create(int x, int y, int width, int height)
    基于此Graphics对象创建一个新的Graphics对象,但具有新的平移和裁剪区域。
    abstract void
    处置此图形上下文并释放其正在使用的任何系统资源。
    void
    draw3DRect(int x, int y, int width, int height, boolean raised)
    绘制指定矩形的3D突出显示轮廓。
    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)
    使用此图形上下文的当前字体和颜色绘制指定字节数组的文本。
    void
    drawChars(char[] data, int offset, int length, int x, int y)
    使用此图形上下文的当前字体和颜色绘制指定字符数组的文本。
    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 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 x, int y, Color bgcolor, ImageObserver observer)
    绘制当前可用的指定图像的尽可能多的部分。
    abstract boolean
    drawImage(Image img, int x, int y, 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
    绘制由指定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(String str, int x, int y)
    使用此图形上下文的当前字体和颜色绘制指定字符串的文本。
    abstract void
    drawString(AttributedCharacterIterator iterator, int x, int y)
    渲染指定迭代器的文本,根据TextAttribute类的规范应用其属性。
    void
    fill3DRect(int x, int y, int width, int height, boolean raised)
    用当前颜色填充的3D突出显示矩形。
    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
    使用图形上下文的当前颜色填充由指定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
    已弃用,用于移除:此API元素可能在将来的版本中被移除。
    终结已弃用以供移除。
    abstract Shape
    获取当前裁剪区域。
    abstract Rectangle
    返回当前裁剪区域的边界矩形。
    返回当前裁剪区域的边界矩形。
    已弃用。
    自JDK版本1.1起,已由getClipBounds()替换。
    abstract Color
    获取此图形上下文的当前颜色。
    abstract Font
    获取当前字体。
    获取当前字体的字体度量。
    abstract FontMetrics
    获取指定字体的字体度量。
    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
    将此图形上下文的当前颜色设置为指定的颜色。
    abstract void
    setFont(Font font)
    将此图形上下文的当前字体设置为指定的字体。
    abstract void
    将此图形上下文的绘制模式设置为使用当前颜色覆盖目标。
    abstract void
    将此图形上下文的绘制模式设置为在当前颜色和新指定颜色之间交替。
    返回表示此Graphics对象值的String对象。
    abstract void
    translate(int x, int y)
    将图形上下文的原点平移至当前坐标系中的点(xy)。

    Methods declared in class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • Graphics

      protected Graphics()
      构造一个新的Graphics对象。此构造函数是图形上下文的默认构造函数。

      由于Graphics是一个抽象类,应用程序不能直接调用此构造函数。图形上下文是从其他图形上下文获取的,或者通过在组件上调用getGraphics来创建。

      参见:
  • Method Details

    • create

      public abstract Graphics create()
      创建一个新的Graphics对象,它是此Graphics对象的副本。
      返回:
      一个新的图形上下文,它是此图形上下文的副本。
    • create

      public Graphics create(int x, int y, int width, int height)
      创建一个基于此Graphics对象的新Graphics对象,但具有新的平移和剪切区域。新的Graphics对象将其原点平移到指定点(xy)。其剪切区域由原始剪切区域与指定矩形的交集确定。所有参数都在原始Graphics对象的坐标系中解释。新的图形上下文与原始图形上下文相同,除了两个方面:
      • 新的图形上下文被平移了(xy)。也就是说,新图形上下文中的点(00)与原始图形上下文中的点(xy)相同。
      • 新的图形上下文具有一个额外的剪切矩形,除了从原始图形上下文继承的(经过平移的)剪切矩形。新剪切矩形的原点位于(00),其大小由widthheight参数指定。
      参数:
      x - x坐标。
      y - y坐标。
      width - 剪切矩形的宽度。
      height - 剪切矩形的高度。
      返回:
      一个新的图形上下文。
      参见:
    • translate

      public abstract void translate(int x, int y)
      将图形上下文的原点平移到当前坐标系中的点(xy)。修改此图形上下文,使其新原点对应于此图形上下文原始坐标系中的点(xy)。在此图形上下文上的后续渲染操作中使用的所有坐标都是相对于这个新原点的。
      参数:
      x - x坐标。
      y - y坐标。
    • getColor

      public abstract Color getColor()
      获取此图形上下文的当前颜色。
      返回:
      此图形上下文的当前颜色。
      参见:
    • setColor

      public abstract void setColor(Color c)
      将此图形上下文的当前颜色设置为指定的颜色。使用此图形上下文进行的所有后续图形操作都使用此指定颜色。空参数会被静默忽略。
      参数:
      c - 新的渲染颜色。
      参见:
    • setPaintMode

      public abstract void setPaintMode()
      将此图形上下文的绘制模式设置为用当前颜色覆盖目标。这将逻辑像素操作函数设置为绘制或覆盖模式。所有后续渲染操作都将使用当前颜色覆盖目标。
    • setXORMode

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

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

      除了这两种颜色之外的颜色的像素以不可预测但可逆转的方式更改;如果同一图形绘制两次,则所有像素都将恢复到其原始值。

      参数:
      c1 - 异或交替颜色
    • getFont

      public abstract Font getFont()
      获取当前字体。
      返回:
      此图形上下文的当前字体。
      参见:
    • setFont

      public abstract void setFont(Font font)
      将此图形上下文的字体设置为指定的字体。使用此图形上下文进行的所有后续文本操作都使用此字体。空参数会被静默忽略。
      参数:
      font - 字体。
      参见:
    • getFontMetrics

      public FontMetrics getFontMetrics()
      获取当前字体的字体度量。
      返回:
      此图形上下文的当前字体的字体度量。
      参见:
    • getFontMetrics

      public abstract FontMetrics getFontMetrics(Font f)
      获取指定字体的字体度量。
      参数:
      f - 指定的字体
      返回:
      指定字体的字体度量。
      参见:
    • getClipBounds

      public abstract Rectangle getClipBounds()
      返回当前剪切区域的边界矩形。此方法引用用户剪切,它独立于与设备边界和窗口可见性相关联的剪切。如果之前未设置剪切,或者使用setClip(null)清除了剪切,则此方法返回null。矩形中的坐标是相对于此图形上下文的坐标系原点。
      返回:
      当前剪切区域的边界矩形,如果未设置剪切则返回null
      自:
      1.1
      参见:
    • clipRect

      public abstract void clipRect(int x, int y, int width, int height)
      将当前剪切与指定矩形相交。结果剪切区域是当前剪切区域与指定矩形的交集。如果没有当前剪切区域,要么是因为从未设置过剪切,要么是使用setClip(null)清除了剪切,指定的矩形将成为新的剪切。此方法设置用户剪切,它独立于与设备边界和窗口可见性相关联的剪切。此方法只能用于使当前剪切区域变小。要使当前剪切区域变大,请使用任何setClip方法。渲染操作在剪切区域之外没有效果。
      参数:
      x - 与剪切相交的矩形的x坐标
      y - 与剪切相交的矩形的y坐标
      width - 与剪切相交的矩形的宽度
      height - 与剪切相交的矩形的高度
      参见:
    • setClip

      public abstract void setClip(int x, int y, int width, int height)
      将当前剪切区域设置为由给定坐标指定的矩形。此方法设置用户剪切,它独立于与设备边界和窗口可见性相关联的剪切。渲染操作在剪切区域之外没有效果。
      参数:
      x - 新剪切矩形的x坐标。
      y - 新剪切矩形的y坐标。
      width - 新剪切矩形的宽度。
      height - 新剪切矩形的高度。
      自:
      1.1
      参见:
    • getClip

      public abstract Shape getClip()
      获取当前剪切区域。此方法返回用户剪切,它独立于与设备边界和窗口可见性相关联的剪切。如果之前未设置剪切,或者使用setClip(null)清除了剪切,则此方法返回null
      返回:
      代表当前剪切区域的Shape对象,如果未设置剪切则返回null
      自:
      1.1
      参见:
    • setClip

      public abstract void setClip(Shape clip)
      将当前剪切区域设置为任意剪切形状。并非所有实现Shape接口的对象都可以用于设置剪切。唯一保证支持的Shape对象是通过getClip方法和Rectangle对象获得的Shape对象。此方法设置用户剪切,它独立于与设备边界和窗口可见性相关联的剪切。
      参数:
      clip - 用于设置剪切区域的Shape。传入null会清除当前的clip
      自从:
      1.1
      参见:
    • 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 - 要填充的矩形的高度。
      参见:
    • drawRect

      public void drawRect(int x, int y, int width, int height)
      绘制指定矩形的轮廓。矩形的左边和右边位于xx + width。顶部和底部边缘位于yy + height。矩形使用图形上下文的当前颜色绘制。
      参数:
      x - 要绘制的矩形的x坐标。
      y - 要绘制的矩形的y坐标。
      width - 要绘制的矩形的宽度。
      height - 要绘制的矩形的高度。
      参见:
    • clearRect

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

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

      参数:
      x - 要清除的矩形的x坐标。
      y - 要清除的矩形的y坐标。
      width - 要清除的矩形的宽度。
      height - 要清除的矩形的高度。
      参见:
    • 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 - 四个角处圆弧的水平直径。
      arcHeight - 四个角处圆弧的垂直直径。
      参见:
    • 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 - 四个角处圆弧的水平直径。
      arcHeight - 四个角处圆弧的垂直直径。
      参见:
    • draw3DRect

      public void draw3DRect(int x, int y, int width, int height, boolean raised)
      绘制指定矩形的3D突出轮廓。矩形的边缘被突出,使其看起来是斜角的并且从左上角照亮。

      用于突出效果的颜色是基于当前颜色确定的。结果矩形覆盖了一个宽度为width + 1像素,高度为height + 1像素的区域。

      参数:
      x - 要绘制的矩形的x坐标。
      y - 要绘制的矩形的y坐标。
      width - 要绘制的矩形的宽度。
      height - 要绘制的矩形的高度。
      raised - 一个布尔值,确定矩形是否看起来凸起于表面之上或沉入表面中。
      参见:
    • fill3DRect

      public void fill3DRect(int x, int y, int width, int height, boolean raised)
      绘制填充有当前颜色的3D突出矩形。矩形的边缘将被突出,使其看起来好像边缘是斜角的并且从左上角照亮。用于突出效果的颜色将根据当前颜色确定。
      参数:
      x - 要填充的矩形的x坐标。
      y - 要填充的矩形的y坐标。
      width - 要填充的矩形的宽度。
      height - 要填充的矩形的高度。
      raised - 一个布尔值,确定矩形是否看起来凸起于表面之上或被雕刻到表面中。
      参见:
    • 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

      public abstract void fillOval(int x, int y, int width, int height)
      使用当前颜色填充由指定矩形界定的椭圆。
      参数:
      x - 要填充的椭圆的左上角的x坐标。
      y - 要填充的椭圆的左上角的y坐标。
      <
    • 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

      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 - 弧的角度范围,相对于起始角度。
      参见:
    • drawPolyline

      public abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
      绘制由xy坐标数组定义的连接线序列。每对(xy)坐标定义一个点。如果第一个点与最后一个点不同,则图形不闭合。
      参数:
      xPoints - x坐标数组
      yPoints - y坐标数组
      nPoints - 点的总数
      自:
      1.1
      参见:
    • drawPolygon

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

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

      参数:
      xPoints - x坐标数组。
      yPoints - y坐标数组。
      nPoints - 点的总数。
      参见:
    • drawPolygon

      public void drawPolygon(Polygon p)
      绘制由指定Polygon对象定义的多边形的轮廓。
      参数:
      p - 要绘制的多边形。
      参见:
    • fillPolygon

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

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

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

      参数:
      xPoints - x坐标数组。
      yPoints - y坐标数组。
      nPoints - 点的总数。
      参见:
    • fillPolygon

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

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

      参数:
      p - 要填充的多边形。
      参见:
    • drawString

      public abstract void drawString(String str, int x, int y)
      使用当前字体和颜色绘制指定字符串的文本。左侧字符的基线位于此图形上下文的坐标系中的位置(xy)。
      参数:
      str - 要绘制的字符串。
      x - x坐标。
      y - y坐标。
      抛出:
      NullPointerException - 如果strnull
      参见:
    • drawString

      public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
      使用指定迭代器的文本渲染,根据TextAttribute类的规范应用其属性。

      左侧字符的基线位于此图形上下文的坐标系中的位置(xy)。

      参数:
      iterator - 要绘制其文本的迭代器
      x - x坐标。
      y - y坐标。
      抛出:
      NullPointerException - 如果iteratornull
      参见:
    • drawChars

      public void drawChars(char[] data, int offset, int length, int x, int y)
      使用当前字体和颜色绘制指定字符数组的文本。第一个字符的基线位于此图形上下文的坐标系中的位置(xy)。
      参数:
      data - 要绘制的字符数组
      offset - 数据中的起始偏移量
      length - 要绘制的字符数
      x - 文本基线的x坐标
      y - 文本基线的y坐标
      抛出:
      NullPointerException - 如果datanull
      IndexOutOfBoundsException - 如果offsetlength小于零,或offset+length大于data数组的长度。
      参见:
    • drawBytes

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

      不建议使用此方法,因为每个字节被解释为范围在0到255之间的Unicode代码点,因此只能用于绘制该范围内的拉丁字符。

      参数:
      data - 要绘制的数据
      offset - 数据中的起始偏移量
      length - 要绘制的字节数
      x - 文本基线的x坐标
      y - 文本基线的y坐标
      抛出:
      NullPointerException - 如果datanull
      IndexOutOfBoundsException - 如果offsetlength小于零,或offset+length大于data数组的长度。
      参见:
    • 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
      参见:
    • 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
      参见:
    • 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
      参见:
    • 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
      参见:
    • 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
      自版本:
      1.1
      参见:
    • 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
      自版本:
      1.1
      参见:
    • dispose

      public abstract void dispose()
      释放此图形上下文并释放其正在使用的任何系统资源。一旦调用了dispose,就不能再使用Graphics对象。

      当Java程序运行时,可能会在短时间内创建大量Graphics对象。尽管垃圾回收器的最终化过程也会释放相同的系统资源,但最好通过调用此方法手动释放相关资源,而不是依赖可能长时间运行才能完成的最终化过程。

      作为组件的paintupdate方法的参数提供的图形对象在这些方法返回时会被系统自动释放。为了效率,程序员应该在使用直接从组件或另一个Graphics对象创建的Graphics对象后,只有在使用完毕时调用dispose

      参见:
    • finalize

      @Deprecated(since="9", forRemoval=true) public void finalize()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Finalization has been deprecated for removal. See Object.finalize() for background information and details about migration options.
      一旦不再引用此图形上下文,就释放此图形上下文。
      覆盖:
      finalize 在类 Object
      参见:
    • toString

      public String toString()
      返回表示此Graphics对象值的String对象。
      覆盖:
      toString 在类 Object
      返回:
      此图形上下文的字符串表示形式。
    • getClipRect

      @Deprecated public Rectangle getClipRect()
      Deprecated.
      As of JDK version 1.1, replaced by getClipBounds().
      返回当前剪切区域的边界矩形。
      返回:
      当前剪切区域的边界矩形,如果未设置剪切,则返回null
    • hitClip

      public boolean hitClip(int x, int y, int width, int height)
      如果指定的矩形区域可能与当前剪切区域相交,则返回true。指定矩形区域的坐标位于用户坐标空间中,并相对于此图形上下文的坐标系统原点。此方法可能使用一种快速计算结果的算法,但有时即使指定的矩形区域不与剪切区域相交,也可能返回true。因此,所采用的具体算法可能在准确性和速度之间进行权衡,但除非可以保证指定的矩形区域不与当前剪切区域相交,否则它永远不会返回false。此方法使用的剪切区域可以表示通过此图形上下文的剪切方法指定的用户剪切以及与设备或图像边界和窗口可见性相关联的剪切的交集。
      参数:
      x - 要针对剪切区域进行测试的矩形的x坐标
      y - 要针对剪切区域进行测试的矩形的y坐标
      width - 要针对剪切区域进行测试的矩形的宽度
      height - 要针对剪切区域进行测试的矩形的高度
      返回:
      如果指定的矩形与当前剪切区域的边界相交,则返回true;否则返回false
    • getClipBounds

      public Rectangle getClipBounds(Rectangle r)
      返回当前剪切区域的边界矩形。矩形中的坐标相对于此图形上下文的坐标系统原点。此方法与getClipBounds不同之处在于使用现有矩形而不是分配新矩形。此方法是指用户剪切,独立于与设备边界和窗口可见性相关联的剪切。如果先前未设置剪切,或者使用setClip(null)清除了剪切,则此方法返回指定的Rectangle
      参数:
      r - 将当前剪切区域复制到的矩形。此矩形中的任何当前值都将被覆盖。
      返回:
      当前剪切区域的边界矩形。