package com.shemnon.btc.view; import javafx.application.Application; import javafx.embed.swing.SwingFXUtils; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.SnapshotParameters; import javafx.scene.control.Button; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.transform.Transform; import javafx.stage.Stage; import javafx.stage.StageStyle; import sun.net.www.content.image.png; import javax.imageio.ImageIO; import java.io.File; import java.io.IOException; import java.util.Arrays; public class TrySnapshot extends Application { public static void main(String... args) { Application.launch(args); } @Override public void start(Stage primaryStage) throws IOException { FXMLLoader loader = new FXMLLoader(TrySnapshot.class.getResource("/com/shemnon/btc/view/logo.fxml")); loader.load(); Pane root = loader.getRoot(); root.setOnMouseClicked(event -> { for (String s : Arrays.asList("shortcut", "volume")) { for (int i : Arrays.asList(16, 32, 128, 256, 512)) { // here we make image from vbox and add it to scene, can be repeated :) SnapshotParameters snp = new SnapshotParameters(); snp.setFill(Color.TRANSPARENT); double scale = i / root.getWidth(); snp.setTransform(Transform.scale(scale, scale, root.getWidth() / 2, root.getHeight() / 2)); WritableImage snapshot = root.snapshot(snp, null); File file = new File("/tmp/" + s + "-" + i + ".png"); try { ImageIO.write(SwingFXUtils.fromFXImage(snapshot, null), "png", file); } catch (Exception e) { } scale = scale * 2; snp.setTransform(Transform.scale(scale, scale, root.getWidth() / 2, root.getHeight() / 2)); snapshot = root.snapshot(snp, null); file = new File("/tmp/" + s + "-" + i + "@2x.png"); try { ImageIO.write(SwingFXUtils.fromFXImage(snapshot, null), "png", file); } catch (Exception e) { } } } }); Scene scene = new Scene(root); scene.setFill(Color.TRANSPARENT); scene.getStylesheets().setAll( "/com/shemnon/btc/view/btc.css", "com/shemnon/btc/ftm/ftm.css" ); primaryStage.initStyle(StageStyle.TRANSPARENT); primaryStage.setScene(scene); primaryStage.setOnHidden(exit -> System.exit(0)); primaryStage.show(); } }