對於 2D 的圖形,材質貼圖相當實用,可以讓畫面更美觀,當初自己在設計繪圖函式庫時也花了不少時間在處理貼圖的部份,而現在 SVG 的貼圖做得更加完善
pattern 參數 :
viewBox "x,y,width,height"
width 貼圖範圍
height
patternUnits objectBoundingBox (預設)
userSpaceOnUse
patternTransform 接 transform 參數
preserveAspectRatio 預設 xMidYMid meet
先來一個最常用的範例
用 pattern 建立一個材質,使用 fill="url(#ID)" 來使用這個材質
<svg xmlns="http://www.w3.org/2000/svg" width="280" height="200" style="background-color:#aef">
<defs>
<pattern id="a112500_p1" width="30" height="30" patternUnits="userSpaceOnUse">
<circle cx="10" cy="10" r="10" fill="#a5f"></circle>
</pattern>
</defs>
<path d="M10,100 L140,10 Q270,0,270,100 Q140,90,140,190z" stroke="#000" fill="url(#a112500_p1)"></path>
</svg>
詳細說明如下 :
圖1
當設定viewBox 以及 width 和 height 必須用 % (百分比) 表示時,材質大小會跟著縮放
viewBox="0,0,40,40" width="20%" height="20%"
圖2
圖1 加上 preserveAspectRatio="none" 後,材質比例也跟著變形
viewBox="0,0,40,40" width="20%" height="20%"
preserveAspectRatio="none"
圖3
設定 patternUnits ="userSpaceOnUse" 後,材質變成以整個 svg 為底,大小位置也固定了
viewBox="0,0,40,40" width="20%" height="20%"
patternUnits ="userSpaceOnUse"
圖4
不設定 viewBox 只設定 patternUnits ="userSpaceOnUse" 時,width 和 height 如果用數字就是材質大小 ,如果是百分比 (%)就是百分比
width="40" height="40" patternUnits ="userSpaceOnUse"
沒有留言:
張貼留言