11
votes

Que fait Qpaintter :: Save () et Qpaintter :: Restaurer () faire?

Je ne suis pas certain de ce que c'est que qpainter est quand j'invoque enregistrer () et restaurer () . .

Sauvette l'image est-elle en train de dessiner ou est-ce juste une économie d'informations comme PenWidth et couleur etc.?
Puis-je l'utiliser pour restaurer l'image d'un précédent événement de peinture?

qt

0 commentaires

3 Réponses :


11
votes

de La documentation :

Vous pouvez à tout moment enregistrer l'état de QPainter en appelant la fonction Enregistrer () qui enregistre tous les paramètres disponibles sur une pile interne. La fonction restaurer () les apparaît.

Tous ces paramètres sont répertoriés au lien donné. Donc, il ne fait que sauver les paramètres de peinture et rien qui est réellement peint.


2 commentaires

Pour élaborer, cela vous permet de faire des choses comme, par exemple: vous configurez un stylo, faites du dessin, de la sauvegarde, de la sauvegarde, de changer le stylo, de faire du dessin, de restaurer, de faire un peu plus de dessin avec le stylo d'origine.


Le lien est mort, vous pourriez peut-être inclure la liste dans la réponse?



6
votes

Si on utilise beaucoup d'économie / restauration, il est agréable d'avoir une petite classe Raii ("Paintersaver") pour vous assurer que chaque sauvegarde () (fait dans la CTOR) a un appel de restauration () correspondant (fait dans le DTOR ), sinon on peut courir dans des erreurs méchantes "sauvegarde déséquilibrée / restaurer".


2 commentaires

(Voir QMutexLocker pour le même concept)


Nous avons obtenu qsignalBlocker . Je me demande vraiment pourquoi nous n'avons jamais eu de qpainerstaTerserer ?



10
votes

Comme vous changez probablement la couleur et le style ou tout autre paramètre de la peinture, vous souhaitez généralement quitter votre fonction de peinture avec les mêmes paramètres qu'il avait lorsqu'il est arrivé. Par conséquent, vous utilisez qpainter :: sauvegarde () avant une modification des paramètres du peintre et qpaintter :: restaurer () Une fois que vous avez terminé avec vos paramètres modifiés, par exemple xxx

peintre-> sauvegarder () met l'état du peintre sur une pile, peintre-> restaurer () tire l'état de la pile et modifie les paramètres pour correspondre à cela.


0 commentaires