2012-05-13 50 views
6

我需要創建一個具有扇形形狀的剪貼蒙版。圓形扇形與Path.addArc的剪貼蒙版?

我能夠用得出下列操作之一:

paint.setColor(0x88FF0000); 
paint.setStyle(Style.FILL); 
canvas.drawArc(oval, 0, 30, true, paint); 

我想用它作爲一個剪輯路徑,所以我嘗試:

Path path = new Path(); 
path.addArc(oval, 0, 30); 
canvas.clipPath(path, Op.REPLACE); 

然而addArc沒有useCenter參數,所以我得到的不是一個扇區而是一個段。

回答

12

好吧,似乎沒有適當的方法使用剪貼蒙版來做到這一點。

但是,有一種替代方法使用PorterDuffXfermode。請參閱ApiDemos中的Xfermodes。

我簡單地使用drawArc繪製一個扇區在我的圖像與DST_OUT運營商。這使得該部分覆蓋的圖像部分不可見(未繪製)。

paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
paint.setColor(0xFFFFFFFF); 
paint.setStyle(Style.FILL); 
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); 

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 
drawable.draw(canvas); 
canvas.drawArc(oval, 30, 90, true, paint); 
2

我需要調整Android的AChartEngine庫才能將餅圖變成圓環圖。我需要替換以下內容:

canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint); 

通過使用Path類以便能夠使用裁剪。以下代碼爲我完成了這項工作:我希望這可以爲不熟悉Canvas API的人節省一些頭疼的問題。