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

时间:2016-07-04 05:48:10

标签: buffer bufferedimage javax.imageio antialiasing

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

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

Text Quality Example

c:/Windows/System32/cmd.exe /c c:/java/bin/java.exe -jar d:/myJar/my.jar -param

2 个答案:

答案 0 :(得分:2)

您可以启用抗锯齿功能。来自Controlling Rendering Quality

  

要在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);

答案 1 :(得分:0)

您应该开启Anti-aliasing。可以像这样启用java中的抗锯齿:

// this is the same as getGraphics() but returns a Graphics2D instead.
Graphics2D g2 = image.createGraphics();

RenderingHints rh = new RenderingHints(
    RenderingHints.KEY_TEXT_ANTIALIASING,
    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2.setRenderingHints(rh);