2017-07-21 66 views
3

在TornadoFX中使用SVG時有一個奇怪的問題。我有一些SVG字符串存儲在我用作程序中的背景圖像的枚舉中。當我認爲在網上瀏覽器完全相同的SVG路徑,沒有扭曲變形,並正確顯示:TornadoFX奇怪的SVG失真

dumb globe svg

,但是當我使用相同路徑TornadoFX作爲svgpath節點內容,它出現像這樣:

dumb globe but distorted

注意,在頂部和底部中間部分的線條奇怪變薄。

它更容易看到第二SVG:

在線觀衆:

dumb waves i'm not that great at this ok

TornadoFX程序:

dumb waves but distorted

我不太清楚什麼能造成這一點。在我看到SVGs(網頁,插畫)中的其他內容時,它們顯得很好,但只要我將它們作爲字符串加載到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) 
    } 
//.. 
} 

任何想法會是什麼造成這種奇怪的扭曲?我在這裏把頭髮拉出來。

編輯:的彎曲SVGs的fiddle

回答

1

TornadoFX不以任何方式影響的SVG渲染,所以我看不到任何其他的解釋,這是在SVG渲染能力的錯誤JavaFX的。也許你正在使用JavaFX不支持的路徑表達式?

+0

JavaFX文檔說,他們堅持W3編碼的字符串標準(https://www.w3.org/TR/SVG/paths.html),這是我正在使用的。 :(如果有一個JavaFX SVG渲染錯誤,這真是一個巨大的失望。 – shanling

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呈現更細的細分。

+0

使用你所選擇的選項設置SVG並沒有改變任何東西。我用一個帶有完整SVG路徑的小提琴編輯了我的原始文章。 – shanling