绘制成图像的组件呈现丑陋的字体

时间:2011-01-28 11:47:04

标签: java windows swing fonts

当我将Swing组件渲染到图像时,字体与在屏幕上渲染组件时不同。这是显示差异的图像:

enter image description here

这是代码:

public static BufferedImage renderComponent(Component component) {
    int width = component.getWidth();
    int height = component.getHeight();
    BufferedImage buffImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = (Graphics2D) buffImage.getGraphics();
    g.setFont(component.getFont());
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    component.paint(g);
    g.dispose();
    return buffImage;
}

我应该更改什么来制作Swing组件的完美屏幕截图? (该应用程序在Windows 7上运行)

3 个答案:

答案 0 :(得分:1)

  

我应该更改什么来制作Swing组件的完美屏幕截图?

我猜你不应该提供渲染提示。

我使用Screen Image类(基本上是你的代码,内置了一些其他功能)。

答案 1 :(得分:1)

在比较ScreenImage类(由 camickr 建议)后,我找到了问题的原因。如果我创建一个类型设置为TYPE_INT_RGB而不是TYPE_INT_ARGB的BufferedImage,则字体很好。

答案 2 :(得分:0)

类机器人

public synchronized BufferedImage createScreenCapture(Rectangle screenRect)