Vraag Wat is het verschil tussen QImage en QPixmap?


Ik begrijp niet wat het verschil is tussen QImage en QPixmap, ze lijken dezelfde functionaliteit te bieden. Wanneer moet ik een QImage gebruiken en wanneer moet ik een QPixmap gebruiken?


60
2018-04-25 00:30


oorsprong


antwoorden:


Easilly antwoordde door de documenten te lezen Qimage en QPixmap:

De QPixmap klasse is een off-screen beeldweergave die kan worden gebruikt als verfapparaat.

De Qimage klasse biedt een hardware-onafhankelijke beeldrepresentatie die directe toegang tot de pixeldata mogelijk maakt, en kan worden gebruikt als een verfapparaat.

Bewerk: Ook van @ Dave's antwoord:

U kunt een QPixmap buiten de GUI-thread niet manipuleren, maar QImage heeft geen dergelijke beperking.

En van @Arnold:

Hier is een korte samenvatting die meestal (niet altijd) van toepassing is:

  • Als u van plan bent een afbeelding te manipuleren, wijzig deze dan, verander er pixels in,   enz., gebruik een QImage.
  • Als u van plan bent dezelfde afbeelding meerdere keren te tekenen   op het scherm, converteer het naar een QPixmap.

39
2018-04-25 12:37



Er is een mooie reeks artikelen bij Qt Labs die veel uitlegt over het grafische Qt-systeem. Dit artikel heeft in het bijzonder een hoofdstuk over QImage vs. QPixmap.

Hier is een korte samenvatting die meestal (niet altijd) van toepassing is:

  • Als u van plan bent een afbeelding te bewerken, aan te passen, pixels er op te wijzigen, enz., Gebruikt u a QImage.
  • Als u van plan bent dezelfde afbeelding meerdere keren op het scherm te tekenen, converteert u deze naar een QPixmap.

33
2018-04-25 04:28



Een belangrijk verschil is dat je a niet kunt maken of manipuleren QPixmap op alles behalve de hoofd-GUI-thread. U kunt echter creëren en manipuleren QImage instanties op achtergrondthreads en converteer ze vervolgens nadat u ze terugstuurt naar de GUI-thread.


30
2018-04-25 12:22



Belangrijk in industriële omgeving:

De QPixmap wordt opgeslagen op de videokaart die het display toont. Niet de QImage.

Dus als u een server hebt waarop de toepassing wordt uitgevoerd en een clientstation het display uitvoert, is dit erg belangrijk op het gebied van netwerkgebruik.

Met een Pixmap bestaat een Redraw erin om alleen het bevel om te hertekenen (een paar octetten) over het netwerk te verzenden. Het bestaat uit het verzenden van de hele afbeelding met een QImage (een paar Mo? ...)


13
2018-06-06 08:19



  • QPixmap  is een "afbeeldingsobject" waarvan pixel representatie heeft geen invloed op uw code, dus QPixmap is ontworpen en geoptimaliseerd voor het weergeven van afbeeldingen op het scherm wordt het opgeslagen op de XServer bij gebruik van X11, waardoor QPixmap op XWindow wordt getekend veel sneller dan QImages tekenen, omdat de gegevens al op de server staan ​​en klaar voor gebruik zijn.

    Wanneer moet u QPixmap gebruiken: Als u alleen maar herhaaldelijk een bestaande afbeelding (pictogram .. achtergrond, enzovoort) wilt tekenen, gebruikt u QPixmap.

  • Qimage is een "array van pixels in het geheugen" van de cliënt code, QImage is ontworpen en geoptimaliseerd voor I / O en voor directe toegang tot en bewerking van pixels.

    Wanneer QImage gebruiken: Als u met Qpaint een afbeeldingpixel wilt tekenen of bewerken.

  • QBitmap is slechts een handige QPixmap-subklasse die een diepte van 1 waarborgt, het is een monochrome (1-bit diepte) pixmap. Net als QPixmap is QBitmap geoptimaliseerd voor gebruik van impliciete gegevensuitwisseling.

  • QPicture is een verfapparaat dat QPainter-opdrachten registreert en herhaalt - uw tekening -

2
2018-02-14 08:01