如何提高 Graphics 的 drawString 方法的字体质量?

Jub*_* F. 3 buffer bufferedimage antialiasing javax.imageio

在 Paint XP 或 Paint Windows 8 中,当您编写文本时,程序会自动提高字体质量(至少对于财务打印机而言)。我想知道如何使用下面相同的 Java 代码来做到这一点。

首先,看看这张图片,看看我的意思:

文本质量示例

BufferedImage image = ImageIO.read(new File("blankdocument.bmp"));
Graphics g = ((BufferedImage) image).getGraphics();

Font helvetica = new Font("Lucida Sans Unicode", Font.PLAIN, 13);
g.setColor(Color.black);
g.setFont(helvetica);

g.drawString("TEXT WRITING EXAMPLE.", 5, 10);
ImageIO.write(image, "PNG", new File("testx.PNG"));
image.flush();
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 5

您可以打开抗锯齿功能。从控制渲染质量开始

要在上下文中设置或更改渲染提示属性Graphics2D,请构造一个RenderingHints对象并Graphics2D使用setRenderingHints方法将其传递到其中。如果您只想设置一个提示,您可以调用Graphics2D setRenderingHint并指定您要设置的提示的键值对。(键值对在类中定义RenderingHints。)

Graphics2D g2 = (Graphics2D) g;
RenderingHints rh = new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING,
            RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2.setRenderingHints(rh);
Run Code Online (Sandbox Code Playgroud)