0

给定一个 Applet 对象,是否有可能以编程方式获取 Applet 窗口的“屏幕截图”(表示为 BufferedImage)?

 JApplet applet = this;
 // ... code here ...
 BufferedImage screenshotOfApplet = ...;
4

4 回答 4

2

至少如果您只使用 Swing 组件,我想可以创建一个与小程序相同大小的 BufferedImage,并使用您可以从 BufferedImage#getGraphics() 获得的 Graphics 对象调用小程序的绘制方法。我这里没有模板代码来测试它是否真的有效,但我想值得一试。

于 2009-10-03T22:14:29.823 回答
1

您可以使用Robot.createScreenCapture(Rectangle bounds)- 但是,必须对小程序进行签名才能使其在部署后工作。

评论后——

如果您只想要小程序组件 -

您可以创建一个 BufferedImage 并对其进行绘画 - 如下所示:

public static BufferedImage imageFor(Component component) {
    BufferedImage image = new BufferedImage(component.getWidth(), 
            component.getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    component.paint(g);
    return image;
}

我不确定这是否需要对小程序进行签名...

于 2009-10-03T21:51:19.497 回答
0

屏幕图像。必须承认我以前从未在 JApplet 上尝试过它,但它在 JFrames 和 JDialogs 上运行良好。

于 2009-10-04T00:18:48.223 回答
-1

我想你想要java.awt.image.PixelGrabber。(IIRC,导致大幅放缓的原因是 Java 图形性能从 1.1 到 1.2,尽管我可能错了。)

于 2009-10-04T00:26:16.517 回答