2017-05-30 12 views
0

シーンを表示しないようにレンダリングしてから、最初の表示用に2枚目の縮小したコピーを作成する方法を探しています。私は内容を2回目にしてこのコピーを小さくすることができました。他の言語で書かれた元のコードは、小さなコピーを作成するための滑らかな(空間的にフィルタリングされた)収縮関数を使用してより良い結果を生み出しました。 JavaFXにこのようなビットマップのコピー/縮小/スムーズ機能はありますか?JavaFXグラフィックを縮小する

+0

(double value) '関数を使って、これはあなたが探しているものですか? – Oswald

+0

私は、誤解していないことを願っています。setScale関数は、それを行う「もう一方の方法」の一部として有用であると思います。言い換えれば、ビットマップコピーを実行するのではなく、シーンを再描画するかどうかです。 – Richard

+0

私はこの質問を理解していませんが、あなたは['snapshot'](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/Scene.html#snapshot-javafx.scene)を行うことができます。 image.WritableImage-)既存のシーンを使って 'Image'を作成し、[' ImageView']で拡大表示します(http://docs.oracle.com/javase/8/javafx/api/javafx/scene/ image/ImageView.html)。スケーリングを制御するには 'setFitHeight()'、 'setFitWidth()'、 'setPreserveRatio()'と 'setSmooth()'を使います。これによりシーンの静的な表示のみが行われるため、アニメーションがある場合などはイメージに表示されません。 –

答えて

1

あなたは次のようにWritableImageとしてシーンのスナップショットを作成することができます。

Scene scene = ... ; 

Image image = scene.snapshot(null); 

をし、その後で画像ビューでのスケーリングされたバージョンを表示: `setScaleXがあり

ImageView sceneImage = new ImageView(); 
sceneImage.setFitWidth(desiredWidth); 
sceneImage.setFitHeight(desiredHeight); 
// force aspect ratio to be preserved if fitWidth and fitHeight would distort it: 
sceneImage.setPreserveRatio(true); 
// this provides a tiny bit of control over the scaling used: 
sceneImage.setSmooth(true); 

sceneImage.setImage(image); 
+0

ありがとうございました。 – Richard

関連する問題