2011-11-01 72 views
9

我想製作一個帶有可繪製形狀的動態alpha蒙版作爲圓圈或其他,並將其應用於Android上的繪製文本。 這裏是我想要的一個例子: alpha mask如何將動態alpha蒙版應用於Android上的文本

我試圖用setXfermode(new PorterDuffXfermode(Mode.SRC_IN))做它,但我不能得到它的工作。 這裏是我在onDraw(Canvas canvas)方法的代碼:

Paint paint = new Paint(); 
paint.setAntiAlias(true); 
canvas.drawARGB(0, 0, 0, 0); 
paint.setColor(Color.WHITE); 
canvas.drawCircle(50, 50, 50, paint); 

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
paint.setColor(Color.RED); 
canvas.drawText("hello", 0, 50, paint); 

在此先感謝您的幫助

回答

10

嘗試單獨創建源和掩模位圖。我見過的大多數例子都涉及使用兩個位圖並使用drawBitmap來執行掩碼。

我使用PorterDuff.Mode.DST_IN作爲繪畫,然後繪製源圖像(不帶繪畫),然後繪製蒙版圖像(帶繪畫)。類似這樣的:

 Bitmap bitmapOut = Bitmap.createBitmap(sizeX, sizeY, 
       Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(bitmapOut); 

     Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     xferPaint.setColor(Color.BLACK); 

     xferPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); 

     canvas.drawBitmap(sourceImage, 0, 0, null); 
     canvas.drawBitmap(alphaMask, 0, 0, xferPaint); 

在這一點上,bitmapOut包含我的蒙面圖像。