Canvas類里面有一個(gè)方法為canvas.drawPath方法雀彼,這個(gè)方法就是用來繪制我們的自定義Path對(duì)象。Path對(duì)象很有用低葫,我們可以繪制一些特殊的動(dòng)畫效果详羡,文字吸附效果等等。所以我們需要來學(xué)習(xí)下Path對(duì)象的使用嘿悬。
Path類实柠,有兩個(gè)構(gòu)造函數(shù),一個(gè)無參構(gòu)造函數(shù)Path()創(chuàng)建一個(gè)空的path善涨,一個(gè)是帶參構(gòu)造函數(shù)Path(Path src)創(chuàng)建一個(gè)非空的帶有src的Path;
成員函數(shù):
path.addArc(RectF oval,float startAngle,float sweepAngle) 畫弧線 stratAngle是只開始的角度窒盐,X軸正方向?yàn)?度草则,sweepAngle是持續(xù)的角度;
path.addPath(Path src,float x,float y);畫一個(gè)src的Path對(duì)象,x是起始橫坐標(biāo)蟹漓,y是起始縱坐標(biāo)炕横。
path.addOval(RectF oval,Direction dir)畫圓,Direction有兩類葡粒,Path.Direction.CW(順時(shí)針畫) Path.Direction.CCW(逆時(shí)針畫);
path.addRect(RectF rect,Direction dir)矩形路徑;
path.moveTo(float x,float y); x y是起始移動(dòng)點(diǎn)的橫坐標(biāo)和縱坐標(biāo),并不畫份殿,只是將畫筆移動(dòng)到x y坐標(biāo)
path.lineTo(float x,float y); 用于直線繪畫,默認(rèn)從(0嗽交,0)繪畫到(x,y)
path.quadTo(float x1,float y1,float x2,float y2);用于繪制圓滑的曲線卿嘲,既貝塞爾曲線,(x1,y1)為控制點(diǎn)夫壁,(x2,y2)為結(jié)束點(diǎn)拾枣。(貝塞爾曲線的形成,就比如我們把一條橡皮筋拉直盒让,橡皮筋的頭尾部對(duì)應(yīng)起點(diǎn)和終點(diǎn)梅肤,然后從拉直的橡皮筋中選擇任意一點(diǎn)(除頭尾對(duì)應(yīng)的點(diǎn)外)扯動(dòng)橡皮筋形成的彎曲形狀,而那個(gè)扯動(dòng)橡皮筋的點(diǎn)就是控制點(diǎn))
path.cubicTo(float x1,float y1,float x2,float y2,float x3,float y3)也是用于繪制貝塞爾曲線邑茄。(x1,y1)為控制點(diǎn)姨蝴,(x2,y2)為控制點(diǎn),(x3,y3)為結(jié)束點(diǎn)撩扒。比quadTo(多了一個(gè)控制點(diǎn)) 如要畫和quadTo一樣的則將第一個(gè)控制點(diǎn)寫成起始位置即可似扔。
path.arcTo(ovalRectF, startAngle, sweepAngle),ovalRectF為橢圓的矩形,startAngle為開始角度搓谆,sweepAngle為結(jié)束角度。
rMoveTo,rlineTo,rQuadTo,rCubicTo方法不帶r的方法是基于原點(diǎn)坐標(biāo)系(偏移量)豪墅,帶r的不是基于遠(yuǎn)點(diǎn)坐標(biāo)泉手,是基于當(dāng)前坐標(biāo)的(偏移量)
path.close(),閉合,曲線繪制完成后偶器,使用該方法可以得到一個(gè)閉合的曲線斩萌。
path.setLastPoint(float x,float y) 重置最后一個(gè)點(diǎn)(x,y)的坐標(biāo)。