2016-11-11 2 views
0

Попытка использовать методJavaFX snapshot для захвата элемента «Background». Меня особенно интересует фон узла (как следует из названия).моментальный снимок JavaFX не фиксирует фон

Если я настраиваю свою сцену на StackPane, а фон буквально является ImageView под тем, что я пытаюсь отобразить, тогда все работает нормально. Но если я использую более интуитивную функцию setBackground узла и пытаюсь захватить моментальный снимок, он (фон) не появляется.

Например, это работает, как ожидалось, если вы getBackgroundNode().snapshot(new SnapshotParameters(), null):

private Node getBackgroundNode() { 
    ImageView background = new ImageView(new Image("https://www.yamaha-motor.ca/images/pages/products/units/MC/action/2016_FZ_07_2_l.jpg")); 
    Rectangle2D viewport = new Rectangle2D(0, 0, 1080, 720); 
    background.setViewport(viewport); 

    return background; 
} 

Однако ниже метод не показывает мне фон, когда я вызываю метод snapshot.

private Node getBackgroundNode() { 
    Image background = new Image("https://www.yamaha-motor.ca/images/pages/products/units/mc/action/2016_fz_07_2_l.jpg"); 

    StackPane stack = new StackPane(); 
    stack.setBackground(new Background(new BackgroundImage(background, null, null, null, null))); 

    stack.setPrefSize(1080, 720); 

    return stack; 
} 

Является ли это просто особенность метода snapshot? Я взглянул на SnapshotParameters, и нет никаких очевидных настроек, которые позволили бы мне захватить фон.

ответ

0

Размер StackPane обычно не установлен до его размещения. Поэтому вы создаете снимок Node размера (0, 0). Правильно оформленный Node включает в себя фон. Вы можете установить размер StackPane, позвонив по телефону resize, прежде чем делать снимок:

Node backgroundNode = getBackgroundNode(); 
backgroundNode.resize(1080, 720); 
backgroundNode.snapshot(new SnapshotParameters(), null); 
Смежные вопросы