У меня есть этот кусок кода, который работал веками (от кислорода до кислорода) в течение последних 4 лет,
Начиная с обновления Windows 10 1809 это приводит к полностью черному изображению. Это происходит на нескольких ПК.
public static Image renderToImage(Control control) {
Shell imgShell = new Shell(control.getDisplay(), SWT.NO_TRIM);
Composite oldParent = control.getParent();
Point size = control.getSize();
imgShell.setSize(size);
control.setParent(imgShell);
Image image = new Image(control.getShell().getDisplay(), size.x, size.y);
GC gc = new GC(image);
//gc.setForeground(imgShell.getDisplay().getSystemColor(SWT.COLOR_RED));
//gc.drawString("Image",size.x/2, size.y/2, true);
control.print(gc);
gc.dispose();
control.setParent(oldParent);
return image;
}
Я обновил свое приложение с кислорода до eclipse-rcp-1903, и эта проблема сохраняется.
Строка gc.drawString работает и запишет на изображение слова «Изображение».
Следующий скриншот показывает проблему. Черная область должна быть изображением, которое было скопировано с оболочки, похожей на изображение под ней.