给定一个 Applet 对象,是否有可能以编程方式获取 Applet 窗口的“屏幕截图”(表示为 BufferedImage)?
JApplet applet = this;
// ... code here ...
BufferedImage screenshotOfApplet = ...;
给定一个 Applet 对象,是否有可能以编程方式获取 Applet 窗口的“屏幕截图”(表示为 BufferedImage)?
JApplet applet = this;
// ... code here ...
BufferedImage screenshotOfApplet = ...;
至少如果您只使用 Swing 组件,我想可以创建一个与小程序相同大小的 BufferedImage,并使用您可以从 BufferedImage#getGraphics() 获得的 Graphics 对象调用小程序的绘制方法。我这里没有模板代码来测试它是否真的有效,但我想值得一试。
您可以使用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;
}
我不确定这是否需要对小程序进行签名...
屏幕图像。必须承认我以前从未在 JApplet 上尝试过它,但它在 JFrames 和 JDialogs 上运行良好。
我想你想要java.awt.image.PixelGrabber
。(IIRC,导致大幅放缓的原因是 Java 图形性能从 1.1 到 1.2,尽管我可能错了。)