2010-01-09 4 views
5

Ich habe einige .png-Symbole, die Alphamasken sind. Ich muss sie mit dem Android SDK als ein Bild zeichnen.Wie man eine Leinwand mit einer Alpha-Maske schneidet und füllt

Auf dem iPhone, verwende ich nach dem dieses Ergebnis zu erhalten, das „Bild“ Alpha-Maske auf den ‚imageMasked‘ Bild mit schwarz als Füllung Umwandlung:

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

Wie erreichen ich die oben in Android SDK?

Ich habe angefangen, folgendes zu schreiben: Bild

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

Ich bin nicht zu finden, wie Sie dies tun Sie den Ausschnitt auf imageMasked verwenden.

+0

ich bin wahrscheinlich die Frage nicht, aber wenn Sie Bild mit Alpha Bildansicht zuweisen - alpha da sein. –

+0

Ich versuche hier, die Alpha-Bitmap in eine Clipping-Region zu konvertieren und diese für die Füllung zu verwenden. Im Wesentlichen eine Alpha-Maske anwenden. Irgendwelche anderen Nehmer auf eine Antwort? –

+0

Was ich versuche zu tun, ist etwas in diesen Zeilen: final int width = icon.getMinimumWidth(); final int Höhe = icon.getMinimumHeight(); \t \t \t \t Bitmap iconMasked Bitmap.createBitmap = (Breite, Höhe , Config.ARGB_8888); Canvas Canvas = neues Canvas (iconMasked); letzte Region region = icon.getTransparentRegion(); canvas.clipRegion (Region); canvas.drawARGB (255, 0, 0, 0); Das Problem mit diesem Ansatz ist mein Symbol ist eine Null aus getTransparentRegion() zurückgeben. Ich habe das nicht erwartet, also bin ich immer noch auf der Suche nach einer Antwort. –

Antwort

2

Gelöst:

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); 
Verwandte Themen