Graphics2D使字体平滑

时间:2023-02-04 00:06:10

Windows下的 ClearType 能使字体看上去更平滑,但似乎对于 java 小程序里面的文字没有作用。不过可以用 Java 2D API 提供的文本处理功能进行美化。Java 2D API 的文本功能包括:

  • 使用抗锯齿处理和微调(hinting)以达到更好的输出质量
  • 可以使用系统安装的所有字体
  • 可以将对图形对象的操作(旋转、缩放、着色、剪切等等)应用到文本上。
  • 支持向字符串添加内嵌属性(如字体、尺寸、深浅,甚至图像)
  • 支持双向文本(启用从右到左的字符顺序,就象您在阿拉伯语和希伯来语中可能遇到的一样)
  • 第一光标和第二光标能够浏览同时包含从右到左和从左到右字符顺序的文本。
  • 先进的字体度量功能,超过旧的 java.awt.FontMetrics 类中的相应功能
  • 排版功能可以实现单词换行和调整多行文本

这个 API 的核心是由 java.awt.Graphics2D 类提供的,该类是 java.awt.Graphics 的一个子类。API 的其它部分由 java.awt 层次结构中的其它包提供,包括 java.awt.color 、 java.awt.font 和 java.awt.geom 。对 Graphics2D 使用

画线平滑:

 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);  
 g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_DEFAULT);  

画线恢复到默认状况:

 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);  
 g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_PURE);