当我将Swing组件渲染到图像时,字体与在屏幕上渲染组件时不同。这是显示差异的图像:
这是代码:
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上运行)
答案 0 :(得分:1)
答案 1 :(得分:1)
在比较ScreenImage类(由 camickr 建议)后,我找到了问题的原因。如果我创建一个类型设置为TYPE_INT_RGB而不是TYPE_INT_ARGB的BufferedImage,则字体很好。
答案 2 :(得分:0)
类机器人
public synchronized BufferedImage createScreenCapture(Rectangle screenRect)