canvas - JavaFX: How to use the GraphicsContext method appendSVGPath(String svgpath) -


i'm working on project makes use of svg's. program has svg's stored svgpath objects in fxml file. file loaded group added screen. in fxml file, there approximately 300 such svgpaths. believe means there 300 nodes on scene graph.

i'm going have scale number of svgpath , having concerns putting more nodes on scene, began @ using cavas/graphicscontext instead.

graphicscontext has method appendsvgpath(string svgpath) think use draw svgs on cavas, not having luck getting them appear.

i'm using canvastest.java file oracle starting point: http://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm

i modified file include following method:

private void appendsvg(graphicscontext gc) {      svgpath svg = new svgpath();      svg.setcontent("m 100 100 l 300 100 l 200 300 z");      svg.setfill(color.red);      svg.setstroke(color.blue);      gc.appendsvgpath(svg.getcontent()); } 

but can't shape appear on canvas.

full test code here:

package canvastest;  import javafx.application.application; import static javafx.application.application.launch; import javafx.scene.group; import javafx.scene.scene; import javafx.scene.canvas.canvas; import javafx.scene.canvas.graphicscontext; import javafx.scene.paint.color; import javafx.scene.shape.svgpath; import javafx.stage.stage;  public class canvastest extends application {  private canvas canvas = new canvas(200, 200); private graphicscontext gc = canvas.getgraphicscontext2d(); private group root = new group();  public static void main(string[] args) {     launch(args); }  @override public void start(stage primarystage) {     primarystage.settitle("canvas test");      appendsvg(gc);  //        svgpath svg = new svgpath(); //        svg.setcontent("m 100 100 l 300 100 l 200 300 z"); //        svg.setfill(color.red); //        svg.setstroke(color.blue);      root.getchildren().add(root);     primarystage.setscene(new scene(root, 400, 400));     primarystage.show(); }  private void appendsvg(graphicscontext gc) {     svgpath svg = new svgpath();     svg.setcontent("m 100 100 l 300 100 l 200 300 z");     svg.setfill(color.red);     svg.setstroke(color.blue);     gc.appendsvgpath(svg.getcontent()); } } 

if uncomment out svg section start, , add svg root, svg display.

has had success using appendsvgpath?

canvas isn't scene graph, stroking , filling paths not happen automatically. instead need feed path segments canvas, explicitly call fill() or stroke() have operations applied. more information, see "path rendering" section @ front of graphicscontext javadoc.

svgpath

import javafx.application.application; import javafx.scene.*; import javafx.scene.canvas.*; import javafx.scene.paint.color; import javafx.stage.stage;  public class canvastest extends application {      private canvas canvas = new canvas(200, 200);     private graphicscontext gc = canvas.getgraphicscontext2d();      public static void main(string[] args) {         launch(args);     }      @override     public void start(stage stage) {         appendsvg(gc);          stage.setscene(new scene(new group(canvas)));         stage.show();     }      private void appendsvg(graphicscontext gc) {         gc.setfill(color.red);         gc.setstroke(color.blue);         gc.appendsvgpath("m 50 50 l 150 50 l 100 150 z");         gc.fill();         gc.stroke();     } } 

Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -