2011-09-23 48 views
0

我有一個不規則形狀的位圖圖像,我用某種顏色填充以模擬「米」類。我當前的方法使用ColorMatrixColorFilter來替換原始bimtap上的顏色,最高可達位圖高度的百分比。我真正想要做的是按體積替換顏色。Android:你如何用色彩填充位圖?

回答

0

您可以在未填充的位圖上繪製一個填充的位圖,但使用基於儀表級別的剪切路徑。如果這可以用一個矩形剪輯完成,Canvas.clipRect(float,float,float,float)將會非常簡單。否則,您可能需要指定更一般的路徑並使用Canvas.clipPath(Path)。但是,clipPath不是反鋸齒的,所以它看起來有點糟糕。

另一種方法是直接使用自定義路徑繪製疊加層,可能使用SVG路徑基元以方便起見。看到這個項目:http://code.google.com/p/svg-android/,特別是這個方法:http://svg-android.googlecode.com/svn/trunk/svgandroid/docs/com/larvalabs/svgandroid/SVGParser.html#parsePath(java.lang.String)。

+0

我在調用Canvas.drawBitmap之前調用Canvas.clipRect,問題在於剪輯矩形的頂部基於位圖高度的百分比,該位圖的高度並未基於體積計算。我認爲需要發生的是,我需要知道位圖每行中有多少像素以及位圖中的像素總數,然後根據哪個行號與目標體積相符來計算剪輯矩形的高度百分比。 –

+1

有趣。好的,我認爲Android庫中的任何內容都無法幫助您。您必須對您正在使用的形狀進行建模,並自己計算「體積」(即2D區域),然後使用它計算適當的行以進行裁剪。一個簡單的啓發式可能就足夠了,我不認爲用戶會要求一個完美的「充水」式進度動畫。 – pents90