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可以用它创建不是很模糊的抗锯齿文本,但在小字体时又能清晰展示。要使用这种绘制方式,需要使用以下代码:
graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, (RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); |
下面的代码展示了以下三种抗锯齿功能:
1. 抗锯齿关闭。
2. 抗锯齿开启。
3. 使用TEXT_ANTIALIAS_GASP提示。
4. 使用TEXT_ANTIALIAS_LCD_HRGB提示。