尝试使用JavaFX StackPane
的snapshot
方法来捕获"背景"元件。我对节点的背景特别感兴趣(顾名思义)。
如果我使用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 :(得分:0)
StackPane
的大小通常在布局之前不会设置。因此,您创建了Node
大小为(0, 0)
的快照。正确布局Node
包括背景。您可以在拍摄快照前通过调用StackPane
来设置resize
的大小:
Node backgroundNode = getBackgroundNode();
backgroundNode.resize(1080, 720);
backgroundNode.snapshot(new SnapshotParameters(), null);