1. 程式人生 > 其它 >使用SVG的path畫半圓

使用SVG的path畫半圓

<svg class="d3-demo3">
            <defs>
                <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
                    <stop offset="0%" style="stop-color:#fff143;stop-opacity:1" />
                    <stop offset="100%" style="stop-color:#ff8c31;stop-opacity:1"
/> </linearGradient> <linearGradient id="grad2" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" style="stop-color:#c3272b;stop-opacity:1" /> <stop offset="100%" style="stop-color:#ff8c31;stop-opacity:1" /> </
linearGradient> </defs> <path d="M 5 200 A 50 50 0 1 1 105 200" stroke="url(#grad1)" stroke-width="10" fill="none" class="one-part"/> <path d="M 105 200 A 50 50 0 1 1 5 200" stroke="url(#grad2)" stroke-width="10" fill="none" class="tow-part"/> </svg>

成果:兩個半圓連成的一個漸變色圓。

 

 

 

 

 

 

簡介:

<path d="M 5 200 A 50 50 0 1 1 105 200" stroke="url(#grad1)" stroke-width="10" fill="none" class="one-part"/>

A指令用來繪製一段弧線,且.允許弧線不閉合。可以把A命令繪製的弧線想象成是橢圓的某一段,A指令以下有七個引數。

A 50 50 0 1 1 105 200

A  rx  ry  順時針角度  1大弧0小弧  1順時針0逆時針  終點x  終點y

第三個引數,順時針角度,這個引數是針對橢圓弧使用的,如果 rx ry 相等(圓弧)的話,設定這個順時針角度是沒有意義的,預設為0就可以了

 

標準半圓:

 <svg class="d3-demo3">
            <defs>
                <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
                    <stop offset="0%" style="stop-color:#fff143;stop-opacity:1" />
                    <stop offset="100%" style="stop-color:#ff8c31;stop-opacity:1" />
                </linearGradient>
            </defs>
            <path d="M 5 200 A 50 50 0 1 1 105 200" stroke="url(#grad1)" stroke-width="10" fill="none" class="one-part"/>
        </svg>

注意:M為起點座標,rx,ry為半徑,通過這兩資料計算出我們需要的終點位置。如果計算出的終點不是標準的位置,圓就出現和設定不一樣的半徑的情況

當起點終點間的距離大於直徑時,畫的永遠是半圓,只有起點終點間距離小於半徑才能畫大半圓和小半圓。

<svg class="d3-demo3">
            <defs>
                <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
                    <stop offset="0%" style="stop-color:#fff143;stop-opacity:1" />
                    <stop offset="100%" style="stop-color:#ff8c31;stop-opacity:1" />
                </linearGradient>
                <linearGradient id="grad2" x1="0%" y1="0%" x2="100%" y2="0%">
                    <stop offset="0%" style="stop-color:#c3272b;stop-opacity:1" />
                    <stop offset="100%" style="stop-color:#ff8c31;stop-opacity:1" />
                </linearGradient>
            </defs>
            <path d="M 5 200 A 50 50 0 1 1 185 200" stroke="url(#grad1)" stroke-width="10" fill="none" class="one-part"/>
            <path d="M 105 200 A 50 50 0 1 1 5 200" stroke="url(#grad2)" stroke-width="10" fill="none" class="tow-part"/>
        </svg>

亂計算終點的情況: