我正在尝试使用 Java Robot 类对我参与过的各种项目进行一些自动化测试,但在获取任何非全屏程序的屏幕截图时遇到一些问题。
对于全屏程序,我只使用:
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); BufferedImage image = robot.createScreenCapture (dim);
我知道我一般无法获取特定窗口的屏幕截图,因为我很确定 Java 不知道每个窗口在屏幕上的位置(因为其操作系统特定)。
但我希望我仍然可以在小程序查看器中获得小程序的屏幕截图,因为该窗口以某种方式连接到 JVM。
那么,关于这是否可能有什么想法吗?如果是这样,我该如何去做呢?
最佳答案
假设您有对小程序(或任何其他组件)的引用,您创建一个离屏 Graphics2D 实例,并让组件将其自身绘制到该实例上。
Component applet = ...; // the applet
Dimension size = applet.getSize();
BufferedImage offScreenImage = (BufferedImage) applet.createImage(size.width, size.height);
Graphics2D g2 = offScreenImg.createGraphics();
g2.setBackground(applet.getBackground());
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.clearRect(0, 0, size.width, size.height);
applet.paint(g2);
// now you can use BufferedImage as before
key 是Component.createImage它创建一个离屏图像以进行双缓冲。
关于java - 获取 Java 小程序的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197363/