模块  java.desktop
软件包  java.awt

Class Graphics2D


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

    坐标空间

    传递给Graphics2D对象的所有坐标都在一个名为User Space的设备无关坐标系中指定,该系统由应用程序使用。 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转换为设备空间,并与设备剪辑组合, 设备剪辑由窗口和设备范围的可见性定义。 用户剪辑和设备剪辑的组合定义了复合剪辑 ,它决定了最终裁剪区域。 渲染系统不会修改用户剪辑以反映生成的复合剪辑。
    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. 查询当前PaintPaintContext ,它指定要在设备空间中呈现的颜色。
    3. Image Operations
      1. 感兴趣的区域由源Image的边界框定义。 此边界框在图像空间中指定,该空间是Image对象的本地坐标系。
      2. 如果AffineTransform传递给drawImage(Image, AffineTransform, ImageObserver) ,则使用AffineTransform将边界框从图像空间转换为用户空间。 如果未提供AffineTransform ,则将边界框视为已在用户空间中。
      3. 使用当前的Transform将源Image的边界框从用户空间转换为设备空间。 请注意,转换边界框的结果不一定会导致设备空间中的矩形区域。
      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上。 笔可以部分落在两个像素上。 没有必要为宽笔选择偏置方向,因为沿着笔遍历边缘发生的混合使得笔的子像素位置对用户可见。 另一方面,当通过将KEY_ANTIALIASING提示键设置为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)
        绘制指定矩形的三维突出显示轮廓。 矩形的边缘突出显示,使它们看起来是斜角并从左上角点亮。

        用于突出显示效果的颜色基于当前颜色确定。 生成的矩形覆盖了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)
        绘制一个用当前颜色填充的三维高亮矩形。 突出显示矩形的边缘,使其看起来好像边缘从左上角开始倾斜并点亮。 用于突出显示效果和填充的颜色由当前Color确定。 此方法仅使用当前的Color并忽略当前的Paint
        重写:
        fill3DRect在类 Graphics
        参数
        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:
        drawString在类 Graphics
        参数
        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)
        设置CompositeGraphics2D上下文。 Composite被所有的绘图方法,如所用drawImagedrawStringdraw ,和fill 它指定在渲染过程中如何将新像素与图形设备上的现有像素组合。

        如果此Graphics2D上下文在显示屏幕上绘制到Component并且Composite是自定义对象而不是AlphaComposite类的实例,并且如果有安全管理器,则使用AWTPermission("readDisplayPixels")权限调用其checkPermission方法。

        参数
        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:
        translate在类 Graphics
        参数
        x - 指定的x坐标
        y - 指定的y坐标
        从以下版本开始:
        1.0
      • translate

        public abstract void translate​(double tx,
                                       double ty)
        将当前的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 - 坐标在正X轴方向上移位的乘数,作为其Y坐标的函数
        shy - 坐标在正Y轴方向上移位的乘数,作为其X坐标的函数
      • transform

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

        public abstract void setTransform​(AffineTransform Tx)
        覆盖Graphics2D上下文中的Transform。 警告: 永远不应该使用此方法在现有变换之上应用新的坐标变换,因为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的内部Shape ,并将Clip设置为生成的交点。 指定Shape与当前转化Graphics2D Transform与当前正在相交之前Clip 此方法用于使当前的Clip更小。 要使Clip更大,请使用setClip 通过此方法修改的用户剪辑独立于与设备边界和可见性关联的剪辑。 如果先前未设置剪辑,或者已使用setClip使用null参数清除剪辑,则指定的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