Dans l'une de mes applications, j'essaie d'effacer/de contourner une partie de UIImage
qui dessine à l'aide du framework CoreGraphics (CGContextRef
etc.). Eh bien dans le processus, je suis en mesure d'effacer le dessin en une seule fois en appelant "removeAllObjects" message, mais je ne pouvais pas comprendre, comment effacer une partie de l'image de dessin. Gosh !! Je me suis assis toute la journée mais toujours aucun résultat, maintenant il me tue. S'il vous plaît, les gars m'aider d'ici. En bref, mon exigence est quelque chose comme une gomme qui peut effacer une partie de mon image de dessin. Apprécier ton aide!!Problème d'effacement ou de contour transparent à l'aide de l'infrastructure CoreGraphics
Répondre
Généralement, CGContext
s sont des toiles uniquement additives, c'est-à-dire que vous ne pouvez ajouter que de la peinture, sans enlever la peinture existante. Si votre toile était blanche pour commencer, vous pouvez peindre avec du blanc pour simuler et effacer l'opération.
Une solution simple serait d'effacer manuellement les zones de l'image bitmap de sauvegarde qui sont en cours d'effacement.
Une solution complexe est de stocker toutes les opérations de peinture que l'utilisateur est entré et les déformer à la suite de l'opération d'effacement (cela également l'ajout d'un mode d'annulation simple,)
Note: Il est le CGContextClearRect
fonction, mais il ne fonctionne généralement que comme prévu sur les contextes bitmap.
Il suffit de faire CGContextSetBlendMode(context, kCGBlendModeClear)
Cet appel modifie le mode de fusion des couleurs de telle sorte que les opérations de dessin bitmap seraient compensation au lieu de dessiner avec la couleur.
Pour revenir au rendu normaux CGContextSetBlendMode(context, kCGBlendModeNormal)
En utilisant différents modes de fusion peut être très utile.
j'avais essayé avec CGContextSetBlendMode, mai b aller dans une direction, je ne pouvais pas comprendre avec that.removeAllObjects a été appelé comme suis en utilisant un NSMutableArray pour garder les objets de dessin dans ce tampon, qui est en appelant le message removeAllObjects.Mon application a trois éléments de la barre d'onglets, un pour enregistrer l'image de dessin, le second est d'effacer l'image et le troisième est d'effacer/effacer une partie de l'image de dessin (quelque chose comme effaceur dans MSPaint) que je viens de poster ici comme ma requête. S'il vous plaît aidez-moi à ce sujet car je ne suis pas encore très bon @ CoreGraphics/2D physique. – Manab
Ou votre première solution à fausser et effacer, je peux essayer. Pour être honnête ici, je n'ai aucune connaissance préalable sur CGContextClearRect, donc j'ai besoin de google plus sur cela. – Manab
Votre meilleur pari serait d'utiliser 'CGBitmapContextCreate' et de fournir votre propre tampon de sauvegarde - alors vous pouvez le modifier directement en utilisant votre propre code d'effacement – rpetrich