Path高級操作
-Path常用操作
作用 | 相關方法 | 備注 |
---|---|---|
rXxx方法 | rMoveTo,rLineTo,rQuadTo,rCubicTo | 不帶r的方法是基于原點的坐標系,rXxx是基于當前點的坐標系 |
填充模式 | setFillType,getFillType, isInverseFillType,toggleInverseFillType |
設置,獲取,判斷和切換填充模式 |
提示方法 | incReserve | 提示Path還有多少個點等待加入 |
布爾操作API19 | op | 對兩個Path進行布爾運算(差集,交集,并集,異或) |
計算邊界 | computeBounds | 計算Path的邊界 |
重置路徑 | reset,rewind | 清除Path的內容, reset不保留內部數據結構,但保留FillType rewind保留內部數據結構,但不保留FillType |
矩陣操作 | transform | 矩陣變換 |
-Path方法詳解
rXxx
path.moveTo(100,100);
path.rLineTo(100,200);
canvas.drawPath(path,mDeafultPaint);
填充模式
填充模式未完全理解
布爾操作
Path path1 = new Path();
Path path2 = new Path();
Path path3 = new Path();
Path path4 = new Path();
path1.addArc(-200,-200,200,200,90,180);
path2.addCircle(0,-100,100, Path.Direction.CW);
path3.addCircle(0,100,100,Path.Direction.CW);
path4.addCircle(-100,-100,30, Path.Direction.CW);
path1.op(path2,Path.Op.UNION);
path1.op(path3, Path.Op.DIFFERENCE);
path1.op(path4,Path.Op.DIFFERENCE);
canvas.drawPath(path1, mPaint);
太極陰陽魚,一個大半圓,和3個小半圓組成
計算邊界
//測量結果會放入Rect
void computeBounds (RectF bounds, boolean exact)
代碼:
Path path = new Path();
path.lineTo(100,50);
path.lineTo(100,-50);
path.close();
path.addCircle(-100,0,100, Path.Direction.CW);
RectF rectF = new RectF();
path.computeBounds(rectF,true);
canvas.drawPath(path,mPaint);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawRect(rectF,mPaint);
結果: