http://blog.csdn.net/xu_fu/article/details/44004841
M: move to 移動(dòng)繪制點(diǎn)L:line to 直線Z:close 閉合C:cubic bezier 三次貝塞爾曲線Q:quatratic bezier 二次貝塞爾曲線A:ellipse 圓弧 每個(gè)命令都有大小寫形式,大寫代表后面的參數(shù)是絕對(duì)坐標(biāo),小寫表示相對(duì)坐標(biāo)。參數(shù)之間用空格或逗號(hào)隔開 命令詳解:M (x y) 移動(dòng)到x,yL (x y) 直線連到x,y,還有簡化命令H(x) 水平連接、V(y)垂直連接Z,沒有參數(shù),連接起點(diǎn)和終點(diǎn)C(x1 y1 x2 y2 x y),控制點(diǎn)x1,y1 x2,y2,終點(diǎn)x,yQ(x1 y1 x y),控制點(diǎn)x1,y1,終點(diǎn)x,yA(rx ry x-axis-rotation large-arc-flag sweep-flag x y) ?rx ry 橢圓半徑 ?x-axis-rotation x軸旋轉(zhuǎn)角度 ?large-arc-flag 為0時(shí)表示取小弧度,1時(shí)取大弧度 ?sweep-flag 0取逆時(shí)針方向,1取順時(shí)針方向以上來自前輩的總結(jié),我的正文在下面:
M的使用格式:M x,y x,y x,y ….可以有無數(shù)對(duì)坐標(biāo)(注:x和y表示坐標(biāo)) 但是如果你單純這樣的寫,是看不出來有什么圖形的,因?yàn)镸命令只是在標(biāo)注一個(gè)一個(gè)的點(diǎn),并沒有把點(diǎn)繪制出來,因?yàn)槲覀冞@是在繪制矢量圖而不是像canvas一樣在繪制位圖,所以我們標(biāo)注的點(diǎn)并不會(huì)出現(xiàn)在屏幕上,那么怎么做呢?可以先這樣寫 (M x,y x,y x,y…Z),然后看看效果,再繼續(xù)往下看
Z的使用格式:直接加在繪制命令的最后 剛剛試過的小伙伴應(yīng)該是知道了,只要加上Z命令,之前被M標(biāo)注的點(diǎn)位就會(huì)被依次連接起來(到最后一個(gè)點(diǎn)時(shí)會(huì)將其與第一個(gè)點(diǎn)連接),最終成為一個(gè)封閉圖形。
A的使用格式:它的參數(shù)比較多,一個(gè)個(gè)說比較難講清楚,我們直接上代碼
<vector xmlns:android="http://schemas.android.com/apk/res/android"? android:width="24dp"? android:height="24dp"? android:viewportHeight="24.0"? android:viewportWidth="24.0"><path android:fillColor="@color/white"? android:pathData="M12,12 a3.2,3.2 0,1 0,1 0 "/></vector>首先M指令將畫筆的起始位置置于12,12這個(gè)坐標(biāo) ,隨后a3.2,3.2表示從圓心開始算,在X軸上的半徑和Y軸上的半徑(自己改動(dòng)一下這兩個(gè)參數(shù)比較好理解),再往后的0,1 0這三個(gè)參數(shù)我們一會(huì)再說,先直接看到最后的1 0,這兩個(gè)參數(shù)表示偏移量(或者說另一個(gè)坐標(biāo),但不是圓心),意思就是從上一個(gè)M指令的12,12坐標(biāo)開始,1,0表示在X軸方向上向右偏移1一個(gè)單位,Y軸不變,這個(gè)時(shí)候我們就有了兩個(gè)固定坐標(biāo)(12,12)和(13,12),然后a指令開始繪圖,它將繪制一個(gè)圓,圓的邊緣將連接這兩個(gè)坐標(biāo)。

這時(shí)候細(xì)心一點(diǎn)來看的話,就應(yīng)該可以發(fā)現(xiàn)了(12,12)到(13,12)之間其實(shí)是一條直線,也就是說,a指令繪制出來的其實(shí)并不是一個(gè)圓,而是一道弧,并且將這條弧的兩端以直線連接了。     說到這里就可以來看看a指令中的 “M12,12 a3.2,3.2 0,1 0,1 0 ” 幾個(gè)紅顏色的參數(shù)了     第一個(gè):官方介紹是 X軸的旋轉(zhuǎn)角度,其實(shí)非常好理解,就是以圓心為原點(diǎn),旋轉(zhuǎn)多少度。。。你想轉(zhuǎn)多少度,就設(shè)置多大參數(shù)。     第二個(gè):它有兩個(gè)參數(shù)可選0或者1。就我們剛剛樓上的例子而言,設(shè)置為1時(shí),我們看到的是白色的大圓弧,而設(shè)置為0時(shí),我們看到是黑色的小圓弧。(這樣看的話,就非常清楚了。。。兩個(gè)點(diǎn)連接的直線分割了整個(gè)圓) 
第三個(gè)參數(shù):是解決順逆時(shí)針的,0表示逆時(shí)針,1表示順時(shí)針。為什么有這個(gè)參數(shù)呢?因?yàn)橛袝r(shí)候,我們需要一個(gè)半圓,也就是(12,12)和(13,12)連成的線剛好處于圓的中間,這個(gè)時(shí)候問題就出現(xiàn)了,你到底是要左邊的圓呢,還是右邊的呢?如果你選0就是左邊的半圓,反之就是右邊的半圓。
C和Q兩個(gè)指令是貝塞爾曲線。。。分別有三個(gè)和兩個(gè)參數(shù),其實(shí)這個(gè)貝塞爾曲線我不知道怎么描述。但如果有使用過CDR繪制矢量圖的人應(yīng)該知道,或者。。。小伙伴們自己試一試摸索一下唄?(原諒我書讀的少,真的是只會(huì)用,不知道怎么描述,就不在這誤人子弟了)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注