2016-11-11 4 views
0

JavaFX StackPanesnapshotメソッドを使用して、「背景」要素をキャプチャしようとしています。私は特にノードの背景に興味があります(名前が示すように)。JavaFXスナップショットで背景がキャプチャされない

シーンをStackPaneで設定し、背景を文字どおりImageViewと表示すると、すべて正常に動作します。しかし、ノードのより直感的な機能を使用してスナップショットをキャプチャしようとすると、その背景(背景)は表示されません。例えば

期待どおり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のサイズは、通常、レイアウトされるまで設定されません。したがって、サイズ(0, 0)Nodeのスナップショットを作成します。適切にレイアウトされたNodeには背景が含まれています。あなたは、スナップショットを取る前にresizeを呼び出すことにより、StackPaneのサイズを設定できます。

Node backgroundNode = getBackgroundNode(); 
backgroundNode.resize(1080, 720); 
backgroundNode.snapshot(new SnapshotParameters(), null); 
関連する問題