Quelle est la différence entre QImage et QPixmap?
Je ne comprends pas quelle est la différence entre QImage et QPixmap, ils semblent offrir la même fonctionnalité. Quand devrais-je utiliser un QImage et quand devrais-je utiliser un QPixmap?
5 réponses
Easilly a répondu en lisant les documents sur QImage et QPixmap:
La classe QPixmap est une représentation d'imagehors écran qui peut être utilisée comme périphérique de peinture.
La classeQImage fournit une représentation d'image indépendante du matériel qui permet un accès direct aux données de pixels et peut être utilisée comme périphérique paint.
Edit: aussi, de la réponse de @Dave:
Vous ne pouvez pas manipuler un QPixmap en dehors du gui-thread, mais QImage n'a pas une telle restriction.
Et de @ Arnold:
Voici un bref résumé qui s'applique généralement (pas toujours):
- Si vous prévoyez de manipuler une image, Modifiez-la, changez de pixels dessus, etc., utilisez un QImage.
- Si vous prévoyez de dessiner la même image plus d'une fois sur l'écran, convertissez-le en QPixmap.
Il y a une belle série d'articles à Qt Labs qui explique beaucoup de choses sur le système graphique Qt. Cet article, en particulier, a une section sur QImage
vs QPixmap
.
Voici un bref résumé qui s'applique généralement (pas toujours):
- Si vous prévoyez de manipuler une image, Modifiez-la, changez de pixels dessus, etc., utilisez un
QImage
. - Si vous prévoyez de dessiner la même image plus d'une fois sur l'écran, convertissez-la en
QPixmap
.
Une différence importante est que vous ne pouvez pas créer ou manipuler un QPixmap
sur autre chose que le thread GUI principal. Vous pouvez cependant créer et manipuler des instances QImage
sur les threads d'arrière-plan, puis les convertir après les avoir renvoyées au thread GUI.
Important dans l'environnement industriel:
Le QPixmap est stocké sur la carte vidéo faisant l'affichage. Pas le QImage.
Donc, si vous avez un serveur exécutant l'application et une station cliente effectuant l'affichage, cela est très important en termes d'utilisation du réseau.
Avec un Pixmap, un redessin consiste à envoyer sur le réseau uniquement l'ordre de redessiner (quelques octets). Il consiste à envoyer l'image entière avec un QImage (quelques Mo ? ...)
-
QPixmap est un "objet image" dont la représentation
pixel
n'a aucune conséquence dans votre code, donc QPixmap est conçu et optimisé pour le rendu des images sur l'écran d'affichage, il est stocké sur le XServer lors de L'utilisation de X11, ainsi dessiner QPixmap sur XWindow est beaucoup plus rapide que dessiner QImages,Quand utiliser QPixmap: Si vous voulez juste pour dessiner une image existante (icône .. fond .. etc) en particulier à plusieurs reprises, puis utilisez QPixmap.
-
QImage est un " tableau de pixels en mémoire "du code client , QImage est conçu et optimisé pour les E / S, et pour l'accès direct aux pixels et la manipulation.
Quand utiliser QImage : Si vous voulez dessiner, avec Qpaint, ou manipuler une image en pixels.
QBitmap est seulement une sous-classe qpixmap pratique assurant une profondeur de 1, c'est un pixmap monochrome (profondeur de 1 bit). Tout comme QPixmap , QBitmap est optimisé pour l'utilisation du partage de données implicite.
- QPicture {[5] } est un périphérique de peinture qui enregistre et rejoue les commandes QPainter -- votre dessin --