文档

Java™教程
隐藏目录
使用呈现提示显示抗锯齿文本
路径: 2D 图形
课程: 使用文本 API
章节: 高级文本显示

使用渲染提示显示抗锯齿文本

Java 2D文本渲染受到渲染提示的影响。

回想一下,最重要的文本绘制方法如下:

Graphics.drawString(String s, int x, int y);

通常,这个方法会以纯色绘制文本中的每个字形,并将字形中的每个“打开”的像素设置为该颜色。这种绘制方式产生最高对比度的文本,但有时会带有锯齿状(锯齿化)边缘。

文本抗锯齿是一种用于平滑屏幕上文本边缘的技术。Java 2D API使应用程序能够通过向Graphics应用文本渲染提示来指定是否使用此技术以及使用哪种算法。

最常见的渲染提示是将前景(文本)颜色与文本边缘处的屏幕背景像素混合。要请求此提示,应用程序必须调用以下方法:

graphics2D.setRenderingHint(
        RenderingHints.KEY_TEXT_ANTIALIASING,
        RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

下图说明了抗锯齿功能。

此图表示“Hello World”字符串的抗锯齿提示。

如果使用不当,此方法可能使文本显得过于模糊。在这种情况下,使用以下提示更好:

graphics2D.setRenderingHint(
        RenderingHints.KEY_TEXT_ANTIALIASING,
        RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);

此方法自动使用字体本身中的信息来决定是否使用抗锯齿或使用纯色。

LCD显示器具有一个属性,Java 2D API可以利用该属性生成不像典型抗锯齿那样模糊但在小尺寸下更易读的文本。要请求使用典型LCD显示器的亚像素LCD文本模式绘制文本,应用程序必须调用以下方法:

graphics2D.setRenderingHint(
        RenderingHints.KEY_TEXT_ANTIALIASING,
        RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);

下面的代码示例按照以下顺序说明了抗锯齿功能:

  1. 抗锯齿关闭。
  2. 抗锯齿开启。
  3. 使用TEXT_ANTIALIAS_GASP提示的抗锯齿。

    注意: 因此GASP表指定仅在这些尺寸上使用提示而不是“平滑”。因此,在许多情况下,生成的文本显示等效于VALUE_TEXT_ANTIALIAS_OFF
  4. 使用TEXT_ANTIALIAS_LCD_HRGB提示的抗锯齿。


注意:  如果您看不到applet运行,请安装至少Java SE Development Kit (JDK) 7版本。

此applet的完整代码在AntialiasedText.java中。


上一页:高级文本显示
下一页:使用文本属性来设置文本样式