Android Bitmap:alpha通道的奇怪行为

时间:2011-11-08 12:28:01

标签: android

好的,有人可以帮我理解原因:

protected void onDraw(Canvas canvas) {          
    Paint paint = new Paint();
        paint.setDither(false);
        paint.setShader( new BitmapShader( bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP) );
        canvas.drawBitmap( bitmap.extractAlpha(),0,0, paint);
}

其中位图是ARGB_8888位图,其中的图像填充了一些像素设置为不透明(a = 0xff)且某些像素透明(a = 0x00)。

上面的代码有效,我可以看到没有绘制正确透明区域的位图。

以下代码不起作用:始终绘制整个位图而忽略alpha分量?

protected void onDraw(Canvas canvas) {
    Paint paint = new Paint();
        paint.setDither(false);
        paint.setXFermode( new PorterDuffXFerMode( PorterDuff.Mode.SRC_ATOP );
        canvas.drawBitmap( bitmap,
                               0,
                               0, paint);
}

0 个答案:

没有答案