Search code examples
pathjavafxgraphicscontext

JavaFX: How can a Path be painted on a GraphicsContext?


JavaFX provides both low-level path painting methods on a GraphicsContext and a high-level Path node.

I want to store shapes in classes and draw them in a GraphicsContext. The Path class seems convenient for me. I know, it is meant to be used as a node in the scene graph, but it contains all drawing elements I need.

I am looking for a method like GraphicsContext.fillPath(Path) but there is none.

Do I have to iterate over the Path elements by hand and translate them into low-level GraphicsContext methods, or did I miss something?


Solution

  • Do I have to iterate over the Path elements by hand and translate them into low-level GraphicsContext methods?

    Yes. You will need to write a translator to take data extracted from a Path and invoke appropriate graphics context methods (see the Path Rendering methods), for example beginPath(), moveTo(), lineTo(), closePath(), fill, stroke(), etc.


    Rather than using a Path, you could perhaps use an SVGPath. It is easy to translate an SVGPath from a Scene graph node data to a GraphicsContext method - you can just do gc.appendSVGPath(svgPath.getContent()).