2016-02-17 103 views
3

我試圖想到的最好的辦法包括SVG多邊形元素中的圖像,就像下面:在多邊形內包含png/svg?

<svg id="graph" width="100%" height="400px"> 
 
    <!-- pattern --> 
 
    <defs> 
 
    <pattern id="image" x="0%" y="0%" height="100%" width="100%" 
 
      viewBox="0 0 64 64"> 
 
     <image x="0%" y="0%" width="64" height="64" xlink:href="https://cdn4.iconfinder.com/data/icons/imod/512/Software/labo.png"></image> 
 
    </pattern> 
 
    </defs> 
 
    <polygon stroke="red" stroke-width="2px" fill="url(#image)" points="300,150 225,280 75,280 0,150 75,20 225,20"></polygon> 
 
</svg>

不過,我也想填補polygon用背景色fill,但由於這是使用上述模式,我不確定正確的方法。

回答

3

將您的polygon轉換爲您的defs,但將fill取出。然後用use標籤製作兩個副本,後一個填充顏色,前一個填充圖像。您還可以通過包括更多的圖像,改變座標進行多份複印等

<svg id="graph" width="100%" height="400px"> 
 
    <!-- pattern --> 
 
    <defs> 
 
    <pattern id="image1" x="0%" y="0%" height="100%" width="100%" viewBox="0 0 64 64"> 
 
     <image x="0%" y="0%" width="64" height="64" xlink:href="https://cdn4.iconfinder.com/data/icons/imod/512/Software/labo.png"></image> 
 
    </pattern> 
 
    <pattern id="image2" x="0%" y="0%" height="100%" width="100%" viewBox="0 0 64 64"> 
 
     <image x="0%" y="0%" width="64" height="64" xlink:href="https://cdn4.iconfinder.com/data/icons/imod/512/Software/iPhoto.png"></image> 
 
    </pattern> 
 
    <polygon id="myShape" stroke="red" stroke-width="2px" points="300,150 225,280 75,280 0,150 75,20 225,20"></polygon> 
 
    </defs> 
 
    <use xlink:href="#myShape" fill="yellow"/> 
 
    <use xlink:href="#myShape" fill="url(#image1)"/> 
 
    <use xlink:href="#myShape" fill="orange" x="400"/> 
 
    <use xlink:href="#myShape" fill="url(#image2)" x="400"/> 
 
</svg>

+0

嘿。這種方法是否適用於多個多邊形,並定義了多個不同的圖像? – absolute

+0

我的更新是否解決您的問題?我用不同的圖像和不同的背景色添加了第二個形狀,但仍然在'defs'中使用相同的原始'polygon'。 –

+0

看起來不錯!感謝那個安德魯。出於興趣,你可以輕鬆控制內的大小嗎?即使其更小並居中。 – absolute

相關問題