Module  java.desktop
软件包  java.awt

Class Graphics2D



  • public abstract class Graphics2D
    extends Graphics
    这个Graphics2D类扩展了Graphics类,以提供对几何,坐标变换,颜色管理和文本布局的更复杂的控制。 这是在Java(tm)平台上呈现二维形状,文字和图像的基础类。

    坐标空间

    传递给Graphics2D对象的所有坐标均在与设备无关的称为“用户空间”的坐标系中指定,由应用程序使用。 Graphics2D对象包含一个AffineTransform对象作为其渲染状态的一部分,它定义了如何将坐标从用户空间转换为设备空间中与设备相关的坐标。

    设备空间中的坐标通常是指单个设备像素,并且在这些像素之间的无限薄的间隙上对齐。 可以使用一些Graphics2D对象来捕获用于存储到图形元文件中的渲染操作,以便稍后在未知物理分辨率的具体设备上播放。 由于在捕获渲染操作时可能不知道分辨率,因此设置Graphics2D Transform将用户坐标转换为逼近目标设备的预期分辨率的虚拟设备空间。 如果估计不正确,则可能需要在播放时应用进一步的转换。

    渲染属性对象执行的一些操作发生在设备空间中,但所有Graphics2D方法都采用用户空间坐标。

    每个Graphics2D对象与定义渲染发生位置的目标相关联。 一个GraphicsConfiguration对象定义了渲染目标的特征,如像素格式和分辨率。 在一个Graphics2D对象的整个生命周期中使用相同的渲染目标。

    当创建一个Graphics2D目的, GraphicsConfiguration指定default transform为目标Graphics2D (一个ComponentImage )。 此默认变换将用户空间坐标系映射到屏幕和打印机设备坐标,使原点映射到设备目标区域的左上角,增加X坐标向右延伸,Y坐标向下延伸。 默认转换的缩放设置为接近72 dpi的设备(如屏幕设备)的标识。 对于高分辨率设备(如打印机),默认变换的缩放设置为每平方英寸约72个用户空间坐标。 对于图像缓冲区,默认变换是Identity变换。

    渲染过程

    渲染过程可以分解为由Graphics2D渲染属性控制的四个阶段。 渲染器可以通过将结果缓存为将来的调用,通过将多个虚拟步骤折叠为单个操作,或通过将各种属性识别为通过修改操作的其他部分可以消除的常见简单情况来优化许多这些步骤。

    渲染过程中的步骤如下:

    1. 确定要呈现的内容
    2. 将渲染操作约束到当前的Clip Clip由指定Shape在用户空间中,并通过使用各种夹操作方法的程序控制GraphicsGraphics2D 用户剪辑由当前的Transform转换为设备空间,并与由Windows和设备扩展区的可见性定义的设备片段组合。 用户剪辑和设备剪辑的组合定义了复合剪辑 ,该剪辑确定了最终裁剪区域。 渲染系统不会修改用户剪辑以反映所生成的复合剪辑。
    3. 确定要呈现的颜色。
    4. 使用Graphics2D上下文中的当前Composite属性将颜色应用于目标绘图面。

    这三种渲染操作,以及它们每个特定渲染过程的细节是:
    1. Shape operations
      1. 如果该操作是一个draw(Shape)操作,则createStrokedShape上的当前方法Stroke在属性Graphics2D用于上下文构造新Shape对象包含指定的轮廓Shape
      2. Shape使用Graphics2D上下文中的当前Transform从用户空间转换为设备空间。
      3. 所述的轮廓Shape使用所提取的getPathIterator的方法Shape ,它返回一个PathIterator对象迭代沿的边界Shape
      4. 如果Graphics2D对象不能处理弯曲区段,所述PathIterator对象返回然后它可以调用备用getPathIterator的方法Shape ,其展平了Shape
      5. 查询Graphics2D上下文中的当前Paint查询PaintContext ,它指定在设备空间中呈现的颜色。
    2. Text operations
      1. 以下步骤用于确定呈现所指示的String所需的字形集:
        1. 如果参数是String ,那么当前FontGraphics2D背景下被要求在中的Unicode字符转换String与任何基本布局和成形算法的字体工具为一组字形的呈现。
        2. 如果参数是一个AttributedCharacterIterator ,迭代器被要求使用其嵌入的字体属性将其自身转换为TextLayout TextLayout实现了更复杂的字形布局算法,可以针对不同写入方向的多种字体自动执行Unicode双向布局调整。
        3. 如果参数是GlyphVector ,则GlyphVector对象已经包含适当的字体特定字形代码,其具有每个字形位置的显式坐标。
      2. 查询当前的Font以获取指示字形的轮廓。 这些轮廓在用户空间中被视为相对于在步骤1中确定的每个字形的位置的形状。
      3. 字符轮廓填充如上所述Shape operations
      4. 当前的Paint被查询了一个PaintContext ,它指定了在设备空间中渲染的颜色。
    3. Image Operations
      1. 感兴趣区域由源Image的边界框定义。 图像空间中指定了这个边界框,它是Image对象的局部坐标系。
      2. 如果AffineTransform传递给drawImage(Image, AffineTransform, ImageObserver) ,则AffineTransform用于将边界框从图像空间转换为用户空间。 如果没有提供AffineTransform ,则边界框被视为已经在用户空间中。
      3. Image的边界框使用当前的Transform从用户空间转换为设备空间。 注意,转换边界框的结果不一定导致设备空间中的矩形区域。
      4. Image对象确定要渲染的颜色,根据当前Transform指定的源到目标坐标映射和可选图像变换进行采样。

    默认渲染属性

    Graphics2D呈现属性的默认值为:
    Paint
    颜色为Component
    Font
    FontComponent
    Stroke
    线宽为1的方形笔,没有冲击,斜切段连接和方形端盖。
    Transform
    getDefaultTransformGraphicsConfigurationComponent
    Composite
    AlphaComposite.SRC_OVER规则。
    Clip
    没有渲染Clip ,输出被剪切到Component

    呈现兼容性问题

    JDK(tm)1.1渲染模型基于一个像素化模型,它指定坐标无限薄,位于像素之间。 绘图操作使用一像素宽的笔来执行,该笔填充路径上的锚点下方和右侧的像素。 JDK 1.1渲染模型与大多数现有的平台渲染器类的能力一致,这些渲染器需要将整数坐标解析为完全落在指定像素数量上的离散笔。

    Java 2D(tm)(Java(tm)2平台)API支持抗锯齿渲染器。 与像素N + 1相反,宽度为一个像素的笔不需要完全落在像素N上。 笔可以部分地落在两个像素上。 不需要为宽笔选择偏移方向,因为沿着笔遍历边缘发生的混合使笔的子像素位置对用户可见。 另一方面,当通过将27048499274646提示键设置为VALUE_ANTIALIAS_OFF提示值来关闭抗锯齿时,渲染器可能需要应用偏移来确定当笔跨越像素边界时要修改的像素,例如当它是沿设备空间中的整数坐标绘制。 虽然抗锯齿渲染器的能力使得渲染模型不再需要为笔指定偏置,但是对于绘制一像素宽水平的常见情况,抗锯齿和非抗锯齿渲染器是理想的,垂直线在屏幕上。 为了确保通过将KEY_ANTIALIASING提示键设置为VALUE_ANTIALIAS_ON启用抗锯齿功能并不会导致这样的线突然变成两倍宽和一半作为不透明,所以最好让该模型指定这样的线路,以便它们完全覆盖一个特定的一组像素,以帮助增加它们的脆度。

    Java 2D API保持与JDK 1.1呈现行为的兼容性,使得Java 2D API下的旧操作和现有渲染器行为不变。 定义映射到一般的drawfill方法的传统方法,这清楚地表明Graphics2D如何基于StrokeTransform属性和渲染提示的设置来扩展Graphics 该定义在默认属性设置下执行相同。 例如,默认的StrokeBasicStroke ,宽度为1,没有BasicStroke ,屏幕绘图的默认转换是Identity变换。

    以下两个规则提供可预测的渲染行为,无论是否使用混叠或抗锯齿。

    • 设备坐标定义在设备像素之间,避免了别名和抗锯齿渲染之间的任何不一致的结果。 如果将坐标定义为像素的中心,则某个形状(例如矩形)覆盖的某些像素将仅覆盖一半。 使用别名渲染,半个被覆盖的像素将被呈现在形状内部或形状外部。 使用抗锯齿渲染,形状的整个边缘上的像素将被覆盖。 另一方面,由于坐标被定义在像素之间,像矩形的形状不会有半个被覆盖的像素,无论其是否使用抗锯齿渲染。
    • 使用BasicStroke对象绘制的线条和路径可能被“归一化”,以便在定位在可绘制的各个点上时提供轮廓的一致呈现,以及是否使用锯齿或锯齿绘制。 此归一化过程由KEY_STROKE_CONTROL提示控制。 没有规定精确的归一化算法,但是这种规范化的目标是确保线条呈现出一致的视觉外观,无论它们如何落在像素网格上,并且以抗锯齿模式促进更稳定的水平和垂直线,使得它们类似于他们的非抗锯齿的对手更紧密。 典型的归一化步骤可以将像素中心的抗锯齿线端点促进以减少混合的量或调整非抗锯齿线的子像素定位,使得浮点线宽度相当于偶数或奇数像素计数。 该过程可以将端点移动高达半个像素(通常沿着两个轴向正无穷大),以促进这些一致的结果。

    一般遗留方法的以下定义与默认属性设置下的以前指定的行为相同:

    • 对于fill操作,包括fillRectfillRoundRectfillOvalfillArcfillPolygon ,并clearRectfill现在可以与所需称为Shape 例如,填充矩形时:
        fill(new Rectangle(x, y, w, h)); 
      叫做。
    • 同样,对于平局操作,包括drawLinedrawRectdrawRoundRectdrawOvaldrawArcdrawPolyline ,并drawPolygondraw现在可以与所需称为Shape 例如,绘制矩形时:
        draw(new Rectangle(x, y, w, h)); 
      叫做。
    • draw3DRectfill3DRect方法是在条款实施drawLinefillRect方法在Graphics类会在当前谓语他们的行为StrokePaint的对象Graphics2D环境。 该类覆盖那些使用当前的Color版本的实现,覆盖当前的Paint ,并且使用fillRect来描述与预先存在的方法完全相同的行为,而不管当前的Stroke的设置Stroke
    Graphics类仅定义了setColor方法来控制要绘制的颜色。 由于Java 2D API扩展了Color对象以实现新的Paint接口,现有的setColor方法现在是将当前Paint属性设置为Color对象的便利方法。 setColor(c)相当于setPaint(c)

    Graphics类定义了两种方法来控制如何将颜色应用于目标。

    1. 实现setPaintMode方法作为设置默认值Composite的方便方法,相当于setComposite(new AlphaComposite.SrcOver)
    2. setXORMode(Color xorcolor)方法被实现为一种方便的方法来设置一个特殊的Composite对象,它忽略源颜色的Alpha组件,并将目标颜色设置为值:
        dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel); 
    另请参见:
    RenderingHints
    • 构造方法详细信息

      • Graphics2D

        protected Graphics2D​()
        构造一个新的Graphics2D对象。 由于Graphics2D是一个抽象类,并且由于必须由不同输出设备的子类定制,因此无法直接创建Graphics2D对象。 相反, Graphics2D对象必须从另一个Graphics2D对象获取,由Component创建,或从图像获取,如BufferedImage对象。
        另请参见:
        Component.getGraphics()Graphics.create()
    • 方法详细信息

      • draw3DRect

        public void draw3DRect​(int x,
                               int y,
                               int width,
                               int height,
                               boolean raised)
        绘制指定矩形的3-D高亮轮廓。 矩形的边缘被突出显示,使得它们看起来是从左上角倾斜并点亮。

        用于突出显示效果的颜色是根据当前颜色确定的。 最终的矩形覆盖了width + 1像素宽, height + 1像素高的区域。 该方法使用当前的Color ,忽略当前的Paint

        重写:
        draw3DRectGraphics
        参数
        x - 要绘制的矩形的x坐标。
        y - 要绘制的矩形的y坐标。
        width - 要绘制的矩形的宽度。
        height - 要绘制的矩形的高度。
        raised - 一个布尔值,用于确定矩形是否显示为高于表面或沉入表面。
        另请参见:
        Graphics.fill3DRect(int, int, int, int, boolean)
      • fill3DRect

        public void fill3DRect​(int x,
                               int y,
                               int width,
                               int height,
                               boolean raised)
        绘制一个填充有当前颜色的3-D高亮矩形。 矩形的边缘被突出显示,使其看起来好像边缘是从左上角倾斜并点亮。 用于突出显示效果和填充的颜色由当前的Color确定。 此方法仅使用当前的Color并忽略当前的Paint
        重写:
        fill3DRectGraphics
        参数
        x - 要填充的矩形的x坐标。
        y - 要填充的矩形的y坐标。
        width - 要填充的矩形的宽度。
        height - 要填充的矩形的高度。
        raised - 一个布尔值,用于确定矩形是否在表面上方凸起或蚀刻到表面中。
        另请参见:
        Graphics.draw3DRect(int, int, int, int, boolean)
      • drawString

        public abstract void drawString​(String str,
                                        int x,
                                        int y)
        使用Graphics2D上下文中的当前文本属性状态呈现指定的String的文本。 第一个字符的基线在用户空间中的位置( xy )。 应用的渲染属性包括ClipTransformPaintFontComposite属性。 对于诸如希伯来语和阿拉伯语的脚本系统中的字符,字形可以从右到左呈现,在这种情况下,提供的坐标是基线上最左边的字符的位置。
        Specified by:
        drawStringGraphics
        参数
        str - 要呈现的字符串
        x - 应该呈现 String的位置的x坐标
        y - 应该呈现 String的位置的y坐标
        异常
        NullPointerException - 如果 strnull
        从以下版本开始:
        1.0
        另请参见:
        Graphics.drawBytes(byte[], int, int, int, int)Graphics.drawChars(char[], int, int, int, int)
      • getDeviceConfiguration

        public abstract GraphicsConfiguration getDeviceConfiguration​()
        返回与此 Graphics2D关联的设备配置。
        结果
        该设备配置为 Graphics2D
      • setComposite

        public abstract void setComposite​(Composite comp)
        Composite设置Graphics2D上下文。 Composite被所有的绘图方法,如所用drawImagedrawStringdraw ,和fill 它指定在渲染过程中如何将新像素与图形设备上的现有像素组合。

        如果这个Graphics2D上下文在显示屏上绘制了一个Component ,而Composite是一个自定义对象,而不是一个AlphaComposite类的实例,如果有一个安全管理器,它的checkPermission方法被调用一个AWTPermission("readDisplayPixels")权限。

        参数
        comp - 用于渲染的 Composite对象
        异常
        SecurityException - 如果使用自定义的 Composite对象渲染到屏幕并设置了安全管理器,并且其 checkPermission方法不允许操作。
        另请参见:
        Graphics.setXORMode(java.awt.Color)Graphics.setPaintMode()getComposite()AlphaCompositeSecurityManager.checkPermission(java.security.Permission)AWTPermission
      • setPaint

        public abstract void setPaint​(Paint paint)
        设置Graphics2D上下文的Paint属性。 使用null Paint对象调用此方法对此Graphics2D的当前Paint属性没有任何影响。
        参数
        paint - 在绘制过程中要用于生成颜色的 Paint对象,或 null
        另请参见:
        Graphics.setColor(java.awt.Color)getPaint()GradientPaintTexturePaint
      • setStroke

        public abstract void setStroke​(Stroke s)
        设置 StrokeGraphics2D的上下文。
        参数
        s -所述 Stroke对象要用于中风 Shape在呈现过程中
        另请参见:
        BasicStrokegetStroke()
      • setRenderingHint

        public abstract void setRenderingHint​(RenderingHints.Key hintKey,
                                              Object hintValue)
        为渲染算法设置单个首选项的值。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控件。 有关一些常用键和值的定义,请参阅RenderingHints类。
        参数
        hintKey - 提示设置的关键。
        hintValue - 指示指定提示类别的首选项的值。
        另请参见:
        getRenderingHint(RenderingHints.Key)RenderingHints
      • getRenderingHint

        public abstract Object getRenderingHint​(RenderingHints.Key hintKey)
        返回渲染算法的单个首选项的值。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控件。 有关某些常用键和值的定义,请参阅RenderingHints类。
        参数
        hintKey - 对应的提示的提示。
        结果
        表示指定提示键的值的对象。 一些键及其相关值在RenderingHints类中定义。
        另请参见:
        RenderingHintssetRenderingHint(RenderingHints.Key, Object)
      • setRenderingHints

        public abstract void setRenderingHints​(Map<?,?> hints)
        用指定的hints替换渲染算法的所有首选项的值。 丢弃所有渲染提示的现有值,并从指定的Map对象初始化新的一组已知提示和值。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控件。 有关常用键和值的定义,请参阅RenderingHints类。
        参数
        hints - 渲染提示要设置
        另请参见:
        getRenderingHints()RenderingHints
      • addRenderingHints

        public abstract void addRenderingHints​(Map<?,?> hints)
        为渲染算法设置任意数量的首选项的值。 仅修改指定的Map对象中存在的渲染提示的值。 不存在于指定对象中的所有其他首选项未修改。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控件。 有关常用键和值的定义,请参阅RenderingHints类。
        参数
        hints - 渲染提示要设置
        另请参见:
        RenderingHints
      • getRenderingHints

        public abstract RenderingHints getRenderingHints​()
        获取渲染算法的首选项。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控件。 返回在一个操作中指定的所有提示键/值对。 有关公用键和值的定义,请参阅RenderingHints类。
        结果
        对包含当前首选项的 RenderingHints的实例的引用。
        另请参见:
        RenderingHintssetRenderingHints(Map)
      • translate

        public abstract void translate​(int x,
                                       int y)
        Graphics2D上下文的原点转换为当前坐标系中的点( xy )。 修改Graphics2D上下文,使其新的起始对应于Graphics2D上下文的前坐标系中的点( xy )。 在这种图形上下文中的后续渲染操作中使用的所有坐标都是相对于这个新的起点。
        Specified by:
        translateGraphics
        参数
        x - 指定的x坐标
        y - 指定的y坐标
        从以下版本开始:
        1.0
      • translate

        public abstract void translate​(double tx,
                                       double ty)
        将当前的Graphics2D Transform与平移变换Graphics2D Transform 随后的渲染相对于前一位置转换指定的距离。 这相当于调用transform(T),其中T是由以下矩阵表示的AffineTransform
          [   1    0    tx  ]
                  [   0    1    ty  ]
                  [   0    0    1   ] 
        参数
        tx - 沿x轴平移的距离
        ty - 沿y轴平移的距离
      • rotate

        public abstract void rotate​(double theta)
        连接当前的Graphics2D Transform与旋转变换。 随后的渲染相对于以前的原点旋转指定的弧度。 这相当于调用transform(R) ,其中R是由以下矩阵表示的AffineTransform
          [   cos(theta)    -sin(theta)    0   ]
                  [   sin(theta)     cos(theta)    0   ]
                  [       0              0         1   ] 
        以正角度θ旋转正X轴上的点朝着正y轴旋转。
        参数
        theta - 以弧度表示的旋转角度
      • rotate

        public abstract void rotate​(double theta,
                                    double x,
                                    double y)
        将当前的Graphics2D Transform与平移的旋转变换连接起来。 随后的渲染由通过转换到指定位置,以指定弧度旋转并以与原始翻译相同的量翻译构造的变换来变换。 这相当于下列呼叫序列:
          translate(x, y);
                  rotate(theta);
                  translate(-x, -y); 
        以正角度θ旋转正X轴上的点朝着正y轴旋转。
        参数
        theta - 以弧度表示的旋转角度
        x - 旋转原点的x坐标
        y - 旋转原点的y坐标
      • scale

        public abstract void scale​(double sx,
                                   double sy)
        使用缩放变换连接当前的Graphics2D Transform后续渲染根据相对于以前缩放的指定缩放因子进行调整大小。 这相当于调用transform(S) ,其中S是由以下矩阵表示的AffineTransform
          [   sx   0    0   ]
                  [   0    sy   0   ]
                  [   0    0    1   ] 
        参数
        sx - 后续渲染操作中的X坐标相对于以前的渲染操作相乘的量。
        sy - 后续渲染操作中Y坐标相对于以前的渲染操作相乘的量。
      • shear

        public abstract void shear​(double shx,
                                   double shy)
        使用剪切变换连接当前的Graphics2D Transform 随后的渲染由相对于前一位置的指定乘数剪切。 这相当于调用transform(SH) ,其中SH是由以下矩阵表示的AffineTransform
          [   1   shx   0   ]
                  [  shy   1    0   ]
                  [   0    0    1   ] 
        参数
        shx - 坐标根据其Y坐标在正X轴方向上移位的乘数
        shy - 坐标在正Y轴方向上移动的乘数作为其X坐标的函数
      • transform

        public abstract void transform​(AffineTransform Tx)
        组成一个AffineTransform与对象Transform在此Graphics2D根据规则最后指定第一涂覆。 如果当前的Transform是Cx,与Tx的组合结果是一个新的Transform Cx'。 Cx'成为TransformGraphics2D 通过更新的Transform Cx'转换点p等价于首先通过Tx转换p,然后将结果转换为原始的Transform Cx。 换句话说,Cx'(p)= Cx(Tx(p))。 如果需要,可以复制Tx,因此对Tx的进一步修改不会影响渲染。
        参数
        Tx - AffineTransform对象由当前组成的 Transform
        另请参见:
        setTransform(java.awt.geom.AffineTransform)AffineTransform
      • setTransform

        public abstract void setTransform​(AffineTransform Tx)
        Graphics2D上下文中覆盖变换。 警告:该方法应用于在现有转换之上应用新的坐标变换,因为Graphics2D可能已经具有其他目的所需的变换,例如渲染Swing组件或应用缩放变换来调整分辨率的打印机。

        要添加坐标变换,使用transformrotatescale ,或shear方法。 setTransform方法仅用于在渲染后恢复原始的Graphics2D变换,如下例所示:

          // Get the current transform
         AffineTransform saveAT = g2.getTransform();
         // Perform transformation
         g2d.transform(...);
         // Render
         g2d.draw(...);
         // Restore original transform
         g2d.setTransform(saveAT); 
        参数
        Tx -所述 AffineTransform这是从检索 getTransform方法
        另请参见:
        transform(java.awt.geom.AffineTransform)getTransform()AffineTransform
      • getComposite

        public abstract Composite getComposite​()
        返回 Graphics2D上下文中的当前 Composite
        结果
        当前的 Graphics2D Composite ,它定义了合成样式。
        另请参见:
        setComposite(java.awt.Composite)
      • setBackground

        public abstract void setBackground​(Color color)
        设置Graphics2D上下文的背景颜色。 背景颜色用于清除区域。 当为Graphics2D构建一个Component ,背景颜色继承自Component 设置在背景色Graphics2D方面仅影响后续clearRect调用,而不是背景色Component 要更改Component的背景,请使用适当的方法进行Component
        参数
        color - 后续调用中使用的背景颜色 clearRect
        另请参见:
        getBackground()Graphics.clearRect(int, int, int, int)
      • getBackground

        public abstract Color getBackground​()
        返回用于清除区域的背景颜色。
        结果
        当前的 Graphics2D Color ,它定义了背景颜色。
        另请参见:
        setBackground(java.awt.Color)
      • getStroke

        public abstract Stroke getStroke​()
        返回 Graphics2D上下文中的当前 Stroke
        结果
        目前的 Graphics2D Stroke ,它定义了线条样式。
        另请参见:
        setStroke(java.awt.Stroke)
      • clip

        public abstract void clip​(Shape s)
        将当前的Clip与内部指定的Shape ,并将Clip设置为Clip的交点。 指定的Shape在与当前Graphics2D Transform之前,用当前的Clip 该方法用于使当前的Clip更小。 要使Clip较大,请使用setClip 通过此方法修改的用户剪辑与与设备边界和可见性相关联的剪辑无关。 如果以前没有设置任何剪辑,或者如果剪辑已经被setClipnull参数清除,则指定的Shape将成为新的用户剪辑。
        参数
        s - Shape要与当前的Clip相交。 如果snull ,此方法清除电流Clip
      • getFontRenderContext

        public abstract FontRenderContext getFontRenderContext​()
        获取此Graphics2D上下文中的Font的呈现上下文。 FontRenderContext封装了抗锯齿和分数指标等应用提示,以及目标设备特定信息,例如每英寸点数。 当使用执行排版格式化的对象(如FontTextLayout时,该信息应由应用程序提供。 这些信息也应该由执行自己的布局的应用程序提供,并且当各种渲染提示已被应用于文本呈现时,需要对字形的各种特征进行准确的测量,例如提前和行高。
        结果
        引用FontRenderContext的一个实例。
        从以下版本开始:
        1.2
        另请参见:
        FontRenderContextFont.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)TextLayout