JavaFX - Save As Image
By Rakesh Menon on Jul 21, 2009
There was a question on forum related to saving of node as image. JavaFX sample - EffectsPlayground had this feature. It uses internal APIs, so its broken in JavaFX 1.2. Community has identified a solution. Thanks to Chris Jensen for pointing me to this.
|If you are using internal APIs as mentioned in forum thread, you will have to update your code to use 1.3 internal APIs. Please refer to JavaFX [1.3] - Save As Image post for update related to JavaFX 1.3.|
Since it uses internal APIs, it may again break in next release. May be most of users just want to save a set of nodes displayed on screen. In that case we may get the top level container and draw the contents on to an image. Yes, draw back is that it will draw all nodes, so we may have to selectively hide nodes before we save the image.
<script src="http://dl.javafx.com/1.2/dtfx.js"></script> <script src="/rakeshmenonp/resource/SaveAsImage/SaveAsImage.js"></script>
For Applet mode, click on above image
First we get the instance of top level container which may be an Applet or Frame.
Now we can save the contents of the Container as Image
Yes, it captures the entire scene. So user has to hide the nodes which are not required before saving as image. For this I have created two groups. One group will hold all nodes that needs to be captured. Other group contains nodes which are not required (such as Button). Before taking saving as image, hide the node which contains controls etc, so that they won't appear in saved image.
Try it out and let me know feedback