Image masquée à gratter pour la découvrir
J'avais envie d'ajouter une interaction sur une vue : Une vue serai cachée derrière un masque et il faudrait la gratter pour découvrir ce qu'elle contient.
Après plusieurs recherches je suis tombé sur ça
J'ai également essayé de comprendre le tuto de Philippe
Troisième piste évoquée sur les forums, celle de se baser sur le code exemple d'Apple GLPaint.
Pourtant, avec toutes ces pistes, je n'arrive pas vraiment à me lancer et je vous demande donc un peu d'aide pour les premières étapes.
Merci d'avance
Après plusieurs recherches je suis tombé sur ça
J'ai également essayé de comprendre le tuto de Philippe
Troisième piste évoquée sur les forums, celle de se baser sur le code exemple d'Apple GLPaint.
Pourtant, avec toutes ces pistes, je n'arrive pas vraiment à me lancer et je vous demande donc un peu d'aide pour les premières étapes.
Merci d'avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Essaye d'abord de construire une image avec :
UIGraphicsBeginImageContext();
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Effectivement, ça à l'air de convenir. Je vais suivre ta piste.
J'aimerai bien changer le CGContextClearRect en quelque chose de rond, mais j'ai pas encore trouvé.
En fait je trouve l'image pas très parlante.
Mais je te mets image, vidéo et le projet Xcode... comme ça c'est complet (sans la musique douce;))
As-tu trouvé une solution au remplacement de la forme carrée de l'effacement (forme ronde par exemple) ?
merci d'avance
Keekoo
J'ai créé celui-ci en quelques instants en gribouillant avec l'outil "pinceau" de Gimp :
Et en français ça donne quoi ?
Mais oui, ça me semble tout à fait le but recherché
En français ça dit que le logiciel découpe des "trous" dans le masque suivant une forme, définie dans une image nommée masqueDecoupage.png. En modifiant cette image avec un logiciel graphique, on change l'allure du découpage. Par exemple, j'ai créé un nouveau masque avec une forme bien connue :
J'améliore la présentation du iTruc et j'écris un tuto sur la manière de réaliser tout ça.
Voici ma solution pour avoir une gomme ronde.
la commande CGContextClearRect ne peut être que carrée (si j'ai bien compris). J'ai donc appliquée une rotation à ce carré ce qui revient à faire une forme ronde. ça doit être améliorable.
maintenant il me reste à déterminer quelle est la surface de la vue qui est effacée pour finaliser l'effacement sans devoir passer le doigt sur tout l'écran.
Elle dessine une ellipse pleine tenant dans les limites d'un rectangle.
Si la hauteur et la largeur du rectangle de destination sont les mêmes, on obtient un cercle.
oui, c'est pas faux ::)
Et avec les sous gagnés une tournée générale de Perrier citron ? ::)
Sinon j'ai trouvé ça très réussi ce que tu as fait moi qui n'aime pas trop m'aventurer dans les manipulations d'images...
Je m'y connais un peu en matière de manipulation d'images, c'est un prérequis pour la création de jeux vidéo, mon domaine de prédilection.
Le code d'initialisation crée 2 UIIlageView et les places sur l'écran, l'une sur l'autre. Elles contiennent toutes les deux une image de 320x480 pixels, la taille de l'écran.
La méthode masquage: charge une petite image png, puis l'affiche sur l'écran à la position courante. Le dessin n'est pas réalisé de la manière classique, mais en passant par l'opérateur de Blending kCGBlendModeDestinationOut qui utilise une formule mathématique pour "fusionner" les couleurs des images de source et de destination, en tenant compte de la couche alpha de l'image source. Il y a différents opérateurs de Blending, avec des modes de fusion différents, donnant des effets très différents. Je m'étendrais davantage sur le sujet avec le tuto sur le Blending.
Pour réaliser l'effet, il suffit d'appeler la méthode masquage: à chaque contact du doigt sur l'écran.
La couleur de la petite image de masquage n'a aucune importance. L'opérateur de Blending kCGBlendModeDestinationOut n'utilise que sa couche alpha pour ces calculs de "fusion graphique".
Nada