GC # copyArea в режиме без головы - PullRequest
3 голосов
/ 02 апреля 2019

Я создал элемент управления для отображения изображений, и для его проверки я создаю «снимки экрана» элемента управления и сравниваю их с ожидаемыми. Скриншоты создаются так:

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 голосов
/ 03 апреля 2019

Я подозреваю, что элементы управления не отображаются на экране, поэтому вы видите пустое изображение.

Я думаю, что ваша проблема похожа на это: https://www.eclipse.org/forums/index.php/t/162790/

Чтобы решитьэто вы должны перейти по этой ссылке: https://wiki.eclipse.org/SWTBot/CI_Server

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...