Android Masque bitmap sur toile gen espace noir
J'ai un masque bitmap avec la moitié est de couleur rouge et est transparent comme ceci
https://www.dropbox.com/s/931ixef6myzusi0/s_2.png
Je veux utiliser un masque bitmap pour extraire du contenu sur la toile visible uniquement dans la zone rouge, un code comme ceci:
Paint paint = new Paint();
public void draw(Canvas canvas) {
//draw content here
...
//and mask bitmap here
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.DST_IN));
canvas.drawBitmap(maskBitmap, 0, 0, paint);
}
Le résultat que mon attend (contenu visible uniquement dans la zone rouge, MAIS LA ZONE TRANSPARENTE DEVENIR le NOIR EST le PROBLÈME!!!!)
cette image résultat :https://www.dropbox.com/s/mqj48992wllfkiq/s_2%20copy.png
Quelqu'un m'aider???
OriginalL'auteur user3693347 | 2014-05-31
Vous devez vous connecter pour publier un commentaire.
Voici une solution qui m'a aidé à mettre en œuvre de masquage:
Le masque doit être une image blanche avec de la transparence.
Il fonctionne comme ceci:
Je trouve que la toile graphismes sont encore tout à fait nécessaire, même si vous utiliser OpenGL, car elle peut générer des graphiques à la volée qui peut ensuite être chargé un OpenGL shader. Cela dit, c'est toujours utile.
mais la création d'image bitmap dans onDraw() peut causer de la mémoire Exception
Il ne doit pas être blanc, comme vous l'avez mentionné. Transparent canal suffit. Vérifier developer.android.com/reference/android/graphics/...
Ce que vous passé en paramètre de tirage
OriginalL'auteur Sergey Pekar
J'ai rencontré le même problème dans mon affichage personnalisé et au lieu de décodage de l'image à partir d'une ressource, j'avais créé l'image d'origine et le masquage d'image à partir du zéro via
canvas.draw*()
méthodes (car à la fois l'origine et le masque sont des formes de base). J'ai fait leblank opaque space
au lieu d'untransparent
. Je l'ai fixée par la définition d'une couche matérielle de mon point de vue.Plus d'info sur le pourquoi de ce qui est à faire ici: https://stackoverflow.com/a/33483016/4747587
OriginalL'auteur Henry
OriginalL'auteur Er. Praful Parmar
J'aime l'approche de Er. Praful Parmar de l' réponse, mais pour moi, il n'a pas tout à fait comme prévu. J'ai eu des problèmes, parce que certains de mise à l'échelle se passait sans intention.
Mon Bitmaps a une densité différente de celle de mon appareil et c'gâché les choses.
Aussi je voulais réduire la création d'Objets, donc j'ai déplacé le
Paint
objet d'une constante pour la réutilisation.Voici donc mon utils méthode:
OriginalL'auteur MrSmith42