无头模式下的GC#copyArea

时间:2019-04-02 09:45:09

标签: swt

我已经创建了一个显示图像的控件,并对其进行测试,我创建了该控件的“屏幕快照”,并将其与我期望的图像进行比较。像这样创建快照:

protected Image createScreenshot(Control control) {
    final GC gc = new GC(control);
    try {
        final Point size = control.getSize();
        final Image result = new Image(control.getDisplay(), size.x, size.y);
        gc.copyArea(result, 0, 0);
        return result;
    } finally {
        gc.dispose();
    }
}

从IDE启动时效果很好,但是从我们的CI服务器以无头模式启动时,图像无法渲染。我尝试为周围的Shell拍照,但是Shell的屏幕截图也是白色图片。

我尝试了以下方法来使屏幕截图正常工作:

    Control#redraw();
    Control#update();

他们没有工作。

即使在无头模式下,也可以呈现控件吗?

1 个答案:

答案 0 :(得分:0)

我怀疑控件没有绘制在屏幕上,这就是为什么您看到空白图像的原因。

我认为您的问题与此类似: https://www.eclipse.org/forums/index.php/t/162790/

为了解决这个问题,您应该点击以下链接: https://wiki.eclipse.org/SWTBot/CI_Server

祝你好运