J'ai deux vues d'image, l'une sur l'autre, avec deux images différentes. Lorsque l'utilisateur touche l'image et déplace son doigt, l'image supérieure doit devenir transparente le long des points de contact avec un rayon fixe. (Comme l'application PhotoChop).Fatsest moyen d'éditer alpha de CGImage (ou UIImage) avec le toucher, puis afficher?
Actuellement, je fais de cette façon ...
- Pour chaque touche.
- Obtenez une copie du tampon d'image de CGImage de l'image supérieure.
- Modifiez le canal alpha du tampon pour créer un cercle transparent centré sur le point de contact.
- Créer une nouvelle CGImage à partir du tampon.
- Créez un UIImage à partir de l'image CG et utilisez la nouvelle UIImage comme image de la vue d'image supérieure.
Cela fonctionne, mais comme vous pouvez le voir trop de copie, crée est impliqué et il est lent. Est-ce que quelqu'un peut me suggérer une façon plus rapide de faire la même chose?
J'ai eu une idée en s'appuyant sur la réponse de drawonward: Vous pourriez garder votre image originale comme le contenu d'un CALayer (A). Définissez la propriété 'mask' de (A) sur une image de masque. Lorsque l'utilisateur touche l'écran, modifiez l'image du masque de manière appropriée. Je pense que cela peut impliquer moins de copies de mémoire. – nielsbot
drawnonward: votre suggestion ne nécessite-t-elle pas de dessiner une CGImage sur chaque mise à jour? Je me demande si l'utilisation d'un masque CALayer + serait plus efficace? – nielsbot