0

我从 SWT 浏览器获取渲染页面并将其导出为图像。我的问题是,当外壳不可见时,我无法正确导出它。如何隐藏浏览器并正确导出图像?

我尝试设置shell.Visible()为 false 但这会破坏图像导出。

这就是我导出图像的方式(不确定问题是否有必要):

GC source = new GC (shell);  
Image image = new Image(display, browser.getClientArea()); 
source.copyArea(image, 0, 0);
ImageLoader io = new ImageLoader ();
io.data = new ImageData[] { image.getImageData() };
File f = new File (currentDir+"/workpng.png");
io.save (f.getAbsolutePath(), SWT.IMAGE_PNG); 
4

1 回答 1

2

这可能是不可能的,因为当窗口不可见时,X 服务器/Windows 将丢弃所有渲染命令(渲染你看不到的东西没有意义)。

在这种情况下,浏览器的客户区是什么?

为了使这个工作,您需要让打开的外壳可见(即不被其他窗口隐藏)。像 Jenkins 这样的工具使用一个插件来启动一个带有XvfbXvnc的 X 会话。设置 env 变量后DISPLAY,所有 UI 渲染都转到这些会话。

于 2012-06-22T14:07:01.790 回答