2013-03-07 3 views

Répondre

4

Vous pouvez simplement faire un pixel transparent en utilisant mBitmap.setPixel (100,100,Color.TRANSPARENT);, idée de base est donc d'itérer sur tous les pixels pour le rendre transparent, mais si vous devez parcourir trop de pixels, cela peut être lent.

OU

Vous pouvez utiliser PorterDuffXferMode pour faire une partie transparente,

Pour un exemple créer un objet de peinture tel que mentionné ci-dessous et le transmettre à la toile:

Paint mPaint = new Paint(); 
mPaint.setXferMode(new PorterDuffXferMode(PorterDuff.Mode.CLEAR)); 

Vous pouvez le passer à la toile comme décrit ci-dessous:

Canvas c = new Canvas(mBitmap); 
c.drawCircle(cx, cy, radius, paint); 

C'est pour le cercle mais j'espère que vous obtiendrez l'indice pour le faire pour la région personnalisée selon vos besoins.

Si cela ne fonctionne toujours pas, vous devrez peut-être désactiver Hardware Acceleration pour cette vue particulière. Pour plus d'informations, reportez-vous au Google DOC.

Espérons que cela vous donnera un indice.

+0

Merci pour la réponse, je vais essayer, il semble 2ème méthode sera plus utile pour une région complexe –

+0

@ CCMinds, j'ai essayé 2ème méthode, et il fonctionne avec peu de modifications ** mPaint.setXfermode (nouveau PorterDuffXfermode (PorterDuff.Mode.CLEAR)) ** –

Questions connexes