任意の SVG パスに適用できる画像でパスを塗りつぶし、そのパスを画像で塗りつぶす CSS クラスを作成したいと考えています。そのパスに合わせて画像を引き伸ばす必要があります。
これを達成するには; イメージタグでパターンを作成し、幅と高さを100%に設定します。ただし、イメージは、コンテナー (この場合はsvgタグ)のobjectBoundingBoxではなく、画面全体の 100% を占めます。
以下はサンプルコードです。
.myClass {
fill: url(#image);
stroke: red;
stroke-width: 5;
}
<svg id='pattern' xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<pattern id='image' x=0 y=0 width="100%" height="100%" patternUnits='objectBoundingBox'>
<image xlink:href='myImage.png' x=0 y=0 width="100%" height="100%" preserveAspectRatio="none"></image>
</pattern>
</defs>
</svg>
<svg id='triangle' xmlns="http://www.w3.org/2000/svg" version="1.1" width='300px' height='300px'>
<path d='M0 0 L300 0 L300 300 Z' class='myClass'></path>
</svg>
私は何か間違ったことをしているのかもしれません。
この問題の解決策を提案してください。