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

> 原文： [https://docs.oracle.com/javase/tutorial/2d/text/renderinghints.html](https://docs.oracle.com/javase/tutorial/2d/text/renderinghints.html)

Java 2D 文本渲染可能受 _ 渲染提示 _ 的影响。

回想一下，最重要的文本绘制方法如下：

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

```

通常，此方法将每个字形绘制为一个纯色文本字符串，并且该字形中“on”的每个像素都设置为该颜色。这种类型的绘图产生最高对比度的文本，但有时会出现锯齿状（锯齿状）边缘。

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

最常见的渲染提示将前景（文本）颜色与文本边缘的屏幕背景像素混合在一起。要请求此提示，应用程序必须调用以下内容：

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

```

下图说明了抗锯齿功能。

<center>![This figure represents an antialiasing hint for the Hello World string.](img/bf6237ded1096f96cba33265b6b44e05.jpg)</center>

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

```
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.  Antialiasing 正在进行中。
3.  使用`TEXT_ANTIALIAS_GASP`提示进行抗锯齿处理。

    * * *

    **注意：**因此，GASP 表指定仅使用这些尺寸的提示而不是“平滑”。因此，在许多情况下，生成的文本显示等同于`VALUE_TEXT_ANTIALIAS_OFF`。

    * * *

4.  使用`TEXT_ANTIALIAS_LCD_HRGB`提示进行抗锯齿处理。

&lt;applet alt="AntialiasedText applet" archive="examples/lib/AntialiasedTextApplet.jar" code="AntialiasedText" height="180" width="300"&gt;&lt;param name="permissions" value="sandbox"&gt;&lt;/applet&gt;

* * *

**Note:**  If you don't see the applet running, you need to install at least the [Java SE Development Kit (JDK) 7](http://www.oracle.com/technetwork/java/javase/downloads/index.html) release.

* * *

该 applet 的完整代码位于 [`AntialiasedText.java`](examples/AntialiasedText.java) 中。