2010-01-09 12 views
5

Mam kilka ikon .png, które są maskami alfa. Muszę renderować je jako obraz do rysowania za pomocą zestawu SDK systemu Android.Jak klipować i wypełniać płótno przy użyciu maski alfa

na iPhone, używam następujących aby uzyskać taki wynik, przekształcając „obraz” alfa maska ​​do wizerunku „imageMasked” używając czarny jako wypełnienia:

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

Jak mogę zrealizować powyższe Android SDK?

zacząłem pisać, co następuje:

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

nie jestem znalezienie jak zrobić wycinek na imageMasked używając obrazu.

+0

Jestem prawdopodobnie nie dostać się pytanie, ale jeśli przypisać obraz z alfa aby zobaczyć - a tam będzie. –

+0

Próbuję tutaj przekonwertować bitmapę alfa na obszar przycinania i użyć go do wypełnienia. Zasadniczo stosowanie maski alfa. Wszyscy inni chętni na odpowiedź? –

+0

Co próbuję zrobić, to coś wzdłuż tych linii: końcowa szerokość int = ikona.getMinimumWidth(); końcowa int height = icon.getMinimumHeight(); \t \t \t \t bitmapy iconMasked = Bitmap.createBitmap (szerokość wysokość Config.ARGB_8888); Płótno canvas = nowe płótno (iconMasked); final Region region = icon.getTransparentRegion(); canvas.clipRegion (region); canvas.drawARGB (255, 0, 0, 0); Problem z tym podejściem polega na tym, że moja ikona zwraca wartość null z getTransparentRegion(). Nie spodziewałem się tego, więc wciąż szukam odpowiedzi. –

Odpowiedz

2

rozwiązany:

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); 
Powiązane problemy