簡體   English   中英

ClipPath和SVG縮放

[英]ClipPath and SVG Scaling

我正在嘗試獲取縮放的svg圖像,如果它從藍色容器中移出,則可以裁剪圖案。 但是,當我將剪切路徑應用於模式時,位置完全相同。 模式的X和Y位置會發生變化,並且在以下所示的情況下最終會在容器外部結束,因為所應用的位置和變換完全相同。 我還應用了feMorphology過濾器來顯示剪切路徑的繪制位置。

SVG (非修剪)

不修剪

XML格式

<svg id="SvgjsSvg1006" width="550" height="650" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs">
    <defs id="SvgjsDefs1007">
        <clipPath id="SvgjsClipPath1019">
            <rect id="SvgjsRect1016" width="315" height="600" x="120" y="27"></rect>
        </clipPath>
        <filter id="dilate_shape">
            <feMorphology operator="dilate" in="SourceGraphic" radius="5" />
        </filter>
    </defs><!--?xml version="1.0" encoding="UTF-8" standalone="no" ?-->
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="550" height="650" viewBox="0 0 550 650" xml:space="preserve">
        <g >
            <g filter="url(&quot;#dilate_shape&quot;)">
                <rect width="315" height="600" x="120" y="27" fill="blue" fill-opacity="0.2" clip-path="url(&quot;#SvgjsClipPath1019&quot;)"></rect>
            </g>
            <image xlink:href="https://www.dropbox.com/pri/get/697%20%5BConverted%5D.svg?_subject_uid=360738345&amp;raw=1&amp;size=1280x960&amp;size_mode=3&amp;w=AADJZ7-5-jq5Qyh2urbHo_G1FCn0ADHB-Li1KOFGuAEEQQ" transform="translate(278.34 410.34) scale(1.66 1.66)"  x="-75" y="-75" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" width="150" height="150"  ></image>
        </g>
    </svg>

SVG (已剪輯)

剪裁

XML格式

<svg id="SvgjsSvg1006" width="550" height="650" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs">
    <defs id="SvgjsDefs1007">
        <clipPath id="SvgjsClipPath1019">
            <rect id="SvgjsRect1016" width="315" height="600" x="120" y="27"></rect>
        </clipPath>
        <filter id="dilate_shape">
            <feMorphology operator="dilate" in="SourceGraphic" radius="5" />
        </filter>
    </defs><!--?xml version="1.0" encoding="UTF-8" standalone="no" ?-->
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="550" height="650" viewBox="0 0 550 650" xml:space="preserve">
        <g >
            <g filter="url(&quot;#dilate_shape&quot;)">
                <rect width="315" height="600" x="120" y="27" fill="blue" fill-opacity="0.2" clip-path="url(&quot;#SvgjsClipPath1019&quot;)"></rect>
            </g>
            <image xlink:href="https://www.dropbox.com/pri/get/697%20%5BConverted%5D.svg?_subject_uid=360738345&amp;raw=1&amp;size=1280x960&amp;size_mode=3&amp;w=AADJZ7-5-jq5Qyh2urbHo_G1FCn0ADHB-Li1KOFGuAEEQQ" transform="translate(278.34 410.34) scale(1.66 1.66)"  x="-75" y="-75" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" width="150" height="150"  clip-path="url(&quot;#SvgjsClipPath1019&quot;)"></image>
        </g>
   </svg>

唯一的不同是,我向第二個svg的圖片標簽添加了clip-path =“ url(”#SvgjsClipPath1019“)

錯誤在於transformclip-path屬性的應用順序。 transform始終是最后一個操作,並且將clip-path應用於未轉換的元素。

這個片段

<image xlink:href="..." x="-75" y="-75"
       transform="translate(278.34 410.34) scale(1.66 1.66)"
       clip-path="url(#SvgjsClipPath1019)" />

相當於

<g transform="translate(278.34 410.34) scale(1.66 1.66)">
    <image xlink:href="..." x="-75" y="-75"
           clip-path="url(#SvgjsClipPath1019)" />
</g>

當您想要實現這一目標時:

<g clip-path="url(#SvgjsClipPath1019)">
    <image xlink:href="..." x="-75" y="-75"
       transform="translate(278.34 410.34) scale(1.66 1.66)"> />
</g>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM