Question

Je viens juste de commencer avec le développement Android et je viens de monde JavaScript / HTML donc j'étudie actuellement les possibilités du SDK Android.

La toile HTML 5 prend en charge les opérations composites (Voir ).

Est-ce possible dans une toile Android? Je scrutais l'API de la classe Canvas, mais ne pouvait pas trouver quelque chose d'utile. J'ai besoin au moins l'opération composite « source-in » ou (si cela est impossible) « source au-dessus ».

Était-ce utile?

La solution

Composition est assurée par le dessin sur un Canvas avec un Paint qui utilise un PorterDuffXfermode.

Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);

Voir pour plus d'informations. J'ai aussi réussi à passer outre onPaint afin que nous puissions appliquer cette composition aux éléments qui attirent themeselves.

Autres conseils

Je ne l'ai pas regardé en faisant ce genre d'opérations, mais je pense qu'il ya un moyen de les faire en utilisant le Rect forme. Vous pouvez définir des rectangles pour délimiter les zones qui doivent être attirés dans la toile, ou pour prendre de l'image source, et la classe Rect dispose de quelques fonctionnalités de comparaison intégré. Par exemple, pour imiter une source, vous pouvez utiliser setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination) pour rendre votre nouveau rectangle ont seulement la zone d'intersection des deux images. Ensuite, vous pouvez utiliser ce rectangle comme un argument dans l'un des ordres de tirage de toile, lui disant de ne prendre que les pixels de l'image source qui sont à l'intérieur ce rectangle. Vous ensuite contrôler le dessin dans l'axe Z par l'ordre dans lequel les commandes de dessin sont exécutées.

Je l'ai trouvé moi-même. Le PorterDuffXfermode met en œuvre tous ces modes composites.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top