本 Java 教程适用于 JDK 8。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅 Java 语言更改,了解 Java SE 9 及其后续版本中更新的语言特性的摘要。
请参阅 JDK 发行说明,了解所有 JDK 发行版的新功能、增强功能以及已删除或弃用的选项的信息。
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);
下图说明了抗锯齿功能。
如果使用不当,此方法可能使文本显得过于模糊。在这种情况下,使用以下提示更好:
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);
下面的代码示例按照以下顺序说明了抗锯齿功能:
TEXT_ANTIALIAS_GASP
提示的抗锯齿。
VALUE_TEXT_ANTIALIAS_OFF
。
TEXT_ANTIALIAS_LCD_HRGB
提示的抗锯齿。
此applet的完整代码在AntialiasedText.java
中。