用另一个SVG形状填充SVG形状

时间:2012-04-06 19:58:56

标签: svg shape fill

是否可以使用一个SVG形状作为另一个形状的填充?

1 个答案:

答案 0 :(得分:6)

您想使用SVG Pattern。见this example

<svg viewBox="0 0 800 400" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <pattern id="TrianglePattern" patternUnits="userSpaceOnUse"
             x="0" y="0" width="100" height="100"
             viewBox="0 0 10 10" >
      <path d="M0,0 L7,0 L3.5,7 z" fill="red" stroke="blue" />
    </pattern> 
  </defs>

  <!-- The ellipse is filled using a triangle pattern paint server
       and stroked with black -->
  <ellipse fill="url(#TrianglePattern)" stroke="black" stroke-width="5"  
           cx="400" cy="200" rx="350" ry="150" />
</svg>

请注意:

  • viewBox的{​​{1}}会剪切所绘制的内容。 (如示例所示,每个三角形的顶部笔划和左上角略微隐藏。)

  • <pattern>的大小与viewBoxwidth不同时,您实际上会缩放模式中图形的大小。 (该示例将图案中7单位宽的三角形按比例缩放10倍,这样在700个单位宽的椭圆的宽度上只能看到其中的7个 - 加上填充。)