2010-01-09 12 views
5

Tengo algunos iconos .png que son máscaras alfa. Necesito renderizarlos como una imagen dibujable usando el SDK de Android.Cómo recortar y rellenar un lienzo con una máscara alfa

En el iPhone, utilizo el siguiente para conseguir este resultado, la conversión de la "imagen" máscara alfa de la imagen de la 'imageMasked' usando negro como relleno:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
CGContextRef context = CGBitmapContextCreate(NULL, thumbWidth, 
    thumbHeight, 8, 4*thumbWidth, colorSpace, kCGImageAlphaPremultipliedFirst); 
CGRect frame = CGRectMake(0,0,thumbWidth,thumbHeight); 
CGContextClipToMask(context, frame, [image CGImage]); 
CGContextFillRect(context, frame); 

CGImageRef imageMasked = CGBitmapContextCreateImage(context); 
CGContextRelease(context); 

¿Cómo puedo lograr lo anterior en Android SDK?

he empezado a escribir lo siguiente:

Drawable image = myPngImage; 

final int width = image.getMinimumWidth(); 
final int height = image.getMinimumHeight(); 

Bitmap imageMasked = Bitmap.createBitmap(width, 
    height, Config.ARGB_8888); 
Canvas canvas = new Canvas(iconMasked); 
image.draw(canvas); ??? 

No encuentro cómo hacer el recorte en imageMasked usando la imagen.

+0

Soy probablemente no consiguió la pregunta, pero si asigna la imagen con alfa para ver la imagen - alfa estará allí. –

+0

Lo que estoy tratando de hacer aquí es convertir el mapa de bits alfa en una región de recorte y usar eso para el relleno. Aplicando esencialmente una máscara alfa ¿Alguien más interesado en una respuesta? –

+0

Lo que intento hacer es algo así: final int ancho = icon.getMinimumWidth(); final int height = icon.getMinimumHeight(); \t \t \t \t Bitmap iconMasked = Bitmap.createBitmap (anchura, altura , Config.ARGB_8888); Lona de lona = Lienzo nuevo (iconMasked); final Region region = icon.getTransparentRegion(); canvas.clipRegion (región); canvas.drawARGB (255, 0, 0, 0); El problema con este enfoque es que mi ícono es return a null de getTransparentRegion(). No esperaba eso, así que aún estoy buscando una respuesta. –

Respuesta

2

resuelto:

Drawable icon = An_Icon_That_Is_An_Alpha_Mask; 
int width = icon.getIntrinsicWidth(); 
int height = icon.getIntrinsicHeight(); 
Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8); 
Canvas canvas = new Canvas(bm); 
icon.setBounds(new Rect(0,0,width,height)); 
icon.draw(canvas); 
Cuestiones relacionadas