L'endroit le plus évident pour utiliser les captures d'écran serait d'implémenter une commande "annuler". La méthode la plus simple et la plus efficace consiste à prendre un instantané de l'écran avant chaque action. Si l'utilisateur appuie sur "annuler", vous pouvez restaurer l'ancien écran.
Pour économiser de l'espace mémoire, vous enregistrez uniquement la différence entre les deux écrans, en les combinant par XOR. En soi, cela ne permet pas de gagner de l'espace, mais cela met tous les pixels inchangés à 0. Pour gagner de l'espace, vous devrez ensuite appliquer une sorte de compression. Étant donné que l'on peut s'attendre à ce que des zones assez importantes soient toutes à zéro, un codage par longueur de course sera probablement rapide et efficace. Pour un codage de la longueur d'exécution, vous transformerez généralement une chaîne d'octets identiques en deux octets, le premier contenant la longueur de l'exécution et le second la valeur. Par exemple, 75 zéros d'affilée seront encodés sous la forme suivante 75 0
.
Si vous voulez aller un peu plus loin, au lieu de sauvegarder des bitmaps XORés, vous pouvez envisager d'utiliser un métafichier. Un métafichier enregistre les actions prises au niveau des appels GDI de Windows, donc (par exemple) si vous dessinez un rectangle rouge de 100x200 à 10, 100, il enregistrera essentiellement cela -- c'est-à-dire qu'au lieu des vingt mille pixels, il enregistrera un identifiant indiquant quelle fonction GDI exécuter, et les paramètres à fournir à cette fonction. Dans un cas typique, la moyenne est d'environ 15 à 20 octets par "commande" exécutée. En même temps, cela implique (souvent) plus de calculs -- par exemple, si vous dessinez un cercle, la réexécution d'un métafichier nécessite le re-rastérisation du cercle au lieu de simplement stocker les bits produits.