Mapa de bits de Android: comportamiento extraño con canal alfa

Ok, ¿alguien puede ayudarme a entender por qué?

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);
}

Donde mapa de bits es un mapa de bits ARGB_8888 relleno con una imagen que tiene algunos píxeles configurados como opacos (a = 0xff) y algunos píxeles transparentes (a = 0x00).

El código anterior funciona, puedo ver el mapa de bits con el área transparente adecuada no dibujada.

El siguiente código, en cambio, NO funciona: ¿el mapa de bits completo siempre se dibuja ignorando los componentes alfa?

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);
}

preguntado el 08 de noviembre de 11 a las 12:11

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.