2017-07-21 1 views
3

Avoir un problème étrange lors de l'utilisation SVGs dans TornadoFX. J'ai quelques chaînes SVG stockées dans une énumération que j'utilise comme images d'arrière-plan dans mon programme. Quand je regarde le chemin même SVG exacte dans une visionneuse en ligne, il n'y a pas de distorsion et il apparaît correctement:distorsion SVG bizarre avec TornadoFX

dumb globe svg

mais quand j'utilise le même chemin dans TornadoFX en tant que contenu du nœud svgpath, il apparaît comme ceci:

dumb globe but distorted

Notez l'étrange amincissement des lignes dans les sections centrales supérieure et inférieure.

Il est plus facile de voir avec la deuxième svg:

viewer en ligne:

dumb waves i'm not that great at this ok

programme TornadoFX:

dumb waves but distorted

Je ne suis pas tout à fait sûr de ce que pourrait être provoquant cela. Dans tout le reste, je vois les SVG dans (web, illustrator) ils semblent bien, mais dès que je les charge comme une chaîne dans un nœud svgpath, ils apparaissent déformés.

Je les initialiser comme ceci:

class mView : View() { 

    override val root = stackpane { 
    svgpath("M910.7,329.8a446.43,446.43,0,1,0,35,173.23A443.52,443.52.. etc") { 
     addClass(SvgStyle) 
    } 
//.. 
} 

Toutes les idées que serait la cause de cette distorsion étrange? Je tire mes cheveux ici.

modifier: un fiddle des SVGs curvy

Répondre

1

TornadoFX ne modifie pas le rendu SVG de quelque façon, donc je ne vois aucune autre explication que cet être un bogue dans les capacités de rendu SVG de JavaFX. Peut-être utilisez-vous une expression de chemin non supportée par JavaFX?

+0

La documentation JavaFX indique qu'ils sont conformes à la norme de chaîne codée W3 (https://www.w3.org/TR/SVG/paths.html), ce que j'utilise. :(C'est une énorme déception s'il y a un bug avec le rendu SVG JavaFX. – shanling

0

Pour la sphère, pouvez-vous essayer de régler la course sur l'objet SVGPath comme dans l'exemple suivant?

stackpane { 
    svgpath("M107 380c40,-101 80,-102 120,-1m-1 -4c39,101 79,102 120,1m-1 4c39,-101 79,-101 120,-1m-1 -2c39,100 79,101 120,1", FillRule.EVEN_ODD) { 
     fill = Color.WHITE 
     stroke = Color.BLACK 
     strokeWidth = 16.0; 
    } 
} 

Dans la partie des courbes de la question, pouvez-vous publier le chemin SVG complet? Je soupçonne qu'il y a quelque chose dans la source du chemin disant à JavaFX de rendre les segments les plus fins.

+0

Définition du SVG avec les options que vous avez n'a pas changé quoi que ce soit. J'édité mon post original avec un Fiddle avec le chemin SVG complet. – shanling