2010-08-13 6 views
1

J'essaye de créer une fonctionnalité d'annulation à une boîte d'image en sauvant l'image juste avant que la peinture ait lieu dans un tableau ou quelque chose. J'ai essayé avec List mais je reçois la même image tout le temps, avec Image List la taille est trop petite pour mes marsouins. Quelles sont les meilleures pratiques pour sauvegarder des données d'annulation ou comment puis-je stocker des images dans la mémoire juste avant que chaque peinture ait lieu? Je vous remercie !Annuler Annuler les modifications avec la collection d'images

Répondre

2

Vous devez cloner le contenu de l'image à chaque fois. Je pense que vous ajoutez toujours la référence de l'image à la liste.

Si vous souhaitez obtenir des fonctionnalités d'annulation correctement, jetez un oeil au Command Pattern.

Une autre façon serait de calculer la différence entre l'image originale et l'image après l'opération, puis de stocker la différence pour économiser de la mémoire.

+0

Merci. J'ai créé une instance d'un bitmap chaque fois que j'ai enregistré et fonctionne très bien. Je vais essayer de trouver une façon plus élégante de le faire et de supprimer les économies restrictives de 5 bitmaps. – andySF

1

De nombreuses peintures auront lieu sur la même image. Windows déclenche l'événement Paint chaque fois qu'une partie du contrôle doit être repeinte. Comme lorsque vous faites glisser une autre fenêtre sur le PB. Ou minimisez et restaurez le formulaire. En d'autres termes, Paint ne vous dit pas que l'image a changé.

Vous devrez dériver votre propre classe à partir de PictureBox et remplacer la propriété Image. Le setter sera appelé lorsque l'image est modifiée.

+0

La sauvegarde est conditionnée par une valeur bool ainsi elle est faite juste quand il en a besoin. – andySF