2010-01-09 12 views
5

का उपयोग कर कैनवास को क्लिप और भरने के लिए मेरे पास कुछ .png आइकन हैं जो अल्फा मास्क हैं। मुझे एंड्रॉइड एसडीके का उपयोग करके उन्हें एक खींचने योग्य छवि के रूप में प्रस्तुत करने की आवश्यकता है।अल्फा मास्क

iPhone पर, मैं इस परिणाम प्राप्त करने के लिए निम्न का उपयोग करें, 'imageMasked' छवि के लिए "छवि" अल्फा मुखौटा परिवर्तित भरने के रूप में काले का उपयोग करते हुए:

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

मैं कैसे में ऊपर पूरा करते हैं एंड्रॉइड एसडीके?

मैं निम्नलिखित लिखने के लिए शुरू कर दिया है:

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

मैं नहीं मिल रहा हूँ कैसे छवि का उपयोग कर imageMasked पर कतरन करने के लिए।

+0

मैं कर रहा हूँ शायद सवाल नहीं मिला, लेकिन अगर आप छवि को देखने के लिए अल्फा के साथ छवि आवंटित - अल्फा नहीं होगा। –

+0

जो मैं यहां करने की कोशिश कर रहा हूं वह अल्फा बिटमैप को क्लिपिंग क्षेत्र में परिवर्तित कर रहा है और इसे भरने के लिए उपयोग कर रहा है। अनिवार्य रूप से अल्फा मास्क लागू करना। किसी अन्य उत्तर देने वाले उत्तर पर? –

+0

जो मैं करने की कोशिश कर रहा हूं वह इन पंक्तियों के साथ कुछ है: अंतिम int चौड़ाई = icon.getMinimumWidth(); अंतिम int ऊंचाई = icon.getMinimumHeight(); \t \t \t \t बिटमैप iconMasked = Bitmap.createBitmap (चौड़ाई, ऊंचाई , Config.ARGB_8888); कैनवास कैनवास = नया कैनवास (आइकनमास्ड); अंतिम क्षेत्र क्षेत्र = icon.getTransparentRegion(); कैनवास.क्लिप क्षेत्र (क्षेत्र); canvas.drawARGB (255, 0, 0, 0); इस दृष्टिकोण के साथ समस्या यह है कि मेरा आइकन gettransparentRegion() से एक शून्य वापस आ गया है। इसकी उम्मीद नहीं थी, इसलिए मैं अभी भी एक जवाब की तलाश में हूं। –

उत्तर

2

हल:

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); 
संबंधित मुद्दे