4

在 TornadoFX 中使用 SVG 时遇到一个奇怪的问题。我有一些 SVG 字符串存储在一个枚举中,我在我的程序中用作背景图像。当我在在线查看器中查看完全相同的 SVG 路径时,没有失真并且显示正确:

愚蠢的地球 svg

但是当我在 TornadoFX 中使用相同的路径作为svgpath节点内容时,它看起来像这样:

愚蠢的地球,但扭曲了

注意顶部和底部中间部分线条的奇怪变细。

使用第二个 svg 更容易看到:

在线查看器:

愚蠢的波浪我在这方面不太擅长

TornadoFX 程序:

哑波但扭曲

我不太确定是什么原因造成的。在其他所有内容中,我在(web,illustrator)中查看 SVG,它们看起来很好,但是一旦我将它们作为字符串加载到svgpath节点中,它们就会出现失真。

我正在像这样初始化它们:

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)
    }
//..
}

有什么想法会导致这种奇怪的失真吗?我在这里拉头发。

编辑:弯曲的 SVG的小提琴

4

2 回答 2

1

TornadoFX 不会以任何方式影响 SVG 渲染,因此我看不出有任何其他解释表明这是 JavaFX 的 SVG 渲染功能中的错误。也许您正在使用 JavaFX 不支持的路径表达式?

于 2017-07-22T07:37:55.143 回答
0

对于球体,您可以尝试在 SVGPath 对象上设置描边,如下例所示?

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;
    }
}

在问题的曲线部分,您可以发布完整的 SVG 路径吗?我怀疑路径源中有一些东西告诉 JavaFX 渲染更薄的部分。

于 2017-07-25T03:27:10.150 回答