buffer - 如何提高图形的 drawString 方法的字体质量?

标签 buffer bufferedimage javax.imageio antialiasing

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

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

Text Quality Example

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();

最佳答案

您可以打开抗锯齿。来自 Controlling Rendering Quality ,

To set or change the rendering hints attribute in the Graphics2D context, construct a RenderingHints object and pass it into Graphics2D by using the setRenderingHints method. If you just want to set one hint, you can call Graphics2D setRenderingHint and specify the key-value pair for the hint you want to set. (The key-value pairs are defined in the RenderingHints class.)

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

关于buffer - 如何提高图形的 drawString 方法的字体质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38177674/

相关文章:

java - 使用 Java 创建多页 Tiff

Java - 从图像中获取像素数组

c++ - DirectX 11 : Use UpdateSubresource to update Vertex and Index buffers

java - 将多个 BufferedImages 叠加在一起?

java - 如何在 java 中旋转缓冲图像?

java - 将BufferedImage中存储的animated-gif写入java.io.File对象

java - Java和Matlab的图像处理结果不同

javascript - node.js 从 utf8 文件创建十六进制缓冲区

c - 缓冲区溢出将超过 0x7E 的字节添加到堆栈

c - 在退出进程之前,如何在C中每秒显示一个点?