我的 SVG 影像中有一個漸變,它未被忽略,但在 Inkscape 與主要瀏覽器(Chrome、Firefox、Edge)中呈現不同。我在 Inkscape 中創建了它,然后在 Adob??e Illustrator 中進行了嘗試,它也將其渲染為與瀏覽器相同(此外,它不會渲染內部陰影填充上的模糊)。
什么可能導致這種情況,如何解決/預防這種情況?

這是漸變:

我在這里上傳了一個更新的 SVG:
uj5u.com熱心網友回復:
Inkscape 通常將漸變元素分為兩部分,例如您的情況:
- 使用漸變的路徑參考它
fill:url(#b), <linearGradient id="b">定義放置漸變的位置并使用 , 參考第二個漸變xlink:href="#a",<linearGradient id="a">定義沿漸變的色標。
但是 Inkscape 有一個錯誤:它假定漸變#b將包含有關放置漸變端點的位置的完整資訊。這些是通過考慮六個屬性來計算的:gradientUnits, x1, y1, x2, y2, gradientTransform.
在您的情況下,其中只有五個是在 gradient 上定義的#b,而第六個是在 gradient 上定義的#a。該規范明確說明在這種情況下該怎么做:
對于未在當前元素上定義的任何指定屬性,用戶代理必須確定模板元素的屬性值并將其用作當前元素的值。
漸變#a在這里起到了模板的作用,gradientTransform應該使用屬性來確定漸變的放置位置。瀏覽器執行此操作,并將漸變放置在大約。向右 600 像素,但 Inkscape 沒有。
由于通過忽略屬性來實作正確放置,因此解決方案很明確:gradientTransform從<linearGradient id="a">.
您可以通過在外部文本或 XML 編輯器中編輯 SVG 或打開 Inkscape 的內部 XML 編輯器來完成此操作。(Shift Ctrl X或編輯 -> XML 編輯器...)
uj5u.com熱心網友回復:
來自 Inkscape 論壇的用戶“Tyler Durden”(https://inkscape.org/forums/other/gradient-in-inkscape-is-not-shown-in-browsers-chromeffedge-and-not-in-ia/#c42496 ) 找到了解決方案:
將單個路徑編組,然后再次取消編組,然后保存。
這解決了這個問題。與轉型有關。此外,留下的提到的“東西”可能是舊定義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/482075.html
上一篇:svg中的多個矩形?
