Comment ajouter une fonctionnalité d'annulation à HTML5 Canvas?
J'ai un Croquis app fait dans tous les HTML5 et Javascript, et je me demandais comment je pourrais créer un Bouton Annuler, de sorte que vous pouvez annuler la dernière chose que vous avez dessiné. Une idée?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous avez à stocker toutes les modifications dans un discbased. Ensuite, vous pouvez supprimer la dernière modification si l'utilisateur veut annuler. Ensuite, vous repeindre toutes les opérations de dessin à partir de votre discbased de nouveau.
Sur http://arthurclemens.github.io/Javascript-Undo-Manager/ j'ai un exemple de travail de l'annuler avec un élément canvas. Lorsque vous apportez une modification, vous nourrissez l'annuler gestionnaire de l'annuler et rétablir des méthodes. Le suivi de la position dans la pile d'annulation est effectuée automatiquement. Source code est sur Github.
L'autre option, si vous avez besoin de manipuler des objets est de convertir votre toile de SVG à l'aide d'une bibliothèque, qui conserve la Toile de l'API de la prévention de la réécriture.
Au moins une telle bibliothèque n'existe à ce moment (novembre 2011):
SVGKit
Une fois que vous avez SVG, il est beaucoup plus facile de supprimer des objets et bien plus encore, sans la nécessité de redessiner l'ensemble de la toile.
Voici une solution qui fonctionne pour moi. Je l'ai essayé dans les dernières versions de Firefox et de Chrome et ça fonctionne très bien dans ces deux navigateurs.
De sorte que chaque fois que vous dessinez quelque chose vous aura-t-il après l'exécution de la fonction canvasLogBook.logDrawing() pour enregistrer un instantané de la toile et puis vous pouvez appeler canvasLogBook.annuler() pour annuler et canvasLogBook.redo() à refaire.