我在Inkscape中创建了一个SVG图像。我把它放在与我班级相同的目录中。
有没有办法加载该图像并将其转换为SVG路径?
这背后的想法是使用getClass().getResource("image.svg").toExternalForm()
获取该图像并将其转换为imageSVG.setContent()
方法的SVGPath。之后,我想将该SVGPath对象放在一个带有button.setGraphic()
方法的Button中。
我不想使用Transcoders或BufferedImage类。
答案 0 :(得分:7)
使用https://github.com/afester/FranzXaver提供的SvgLoader
,您只需将SVG文件作为JavaFX节点加载,并将其设置在按钮上作为其图形:
...
// load the svg file
InputStream svgFile =
getClass().getResourceAsStream("/afester/javafx/examples/data/Ghostscript_Tiger.svg");
SvgLoader loader = new SvgLoader();
Group svgImage = loader.loadSvg(svgFile);
// Scale the image and wrap it in a Group to make the button
// properly scale to the size of the image
svgImage.setScaleX(0.1);
svgImage.setScaleY(0.1);
Group graphic = new Group(svgImage);
// create a button and set the graphics node
Button button = new Button();
button.setGraphic(graphic);
// add the button to the scene and show the scene
HBox layout = new HBox(button);
HBox.setMargin(button, new Insets(10));
Scene scene = new Scene(layout);
primaryStage.setScene(scene);
primaryStage.show();
...