Ich verstehe nicht, was der Unterschied zwischen QImage und QPixmap ist, sie scheinen die gleiche Funktionalität zu bieten. Wann sollte ich ein QImage verwenden und wann sollte ich eine QPixmap verwenden?
Ich verstehe nicht, was der Unterschied zwischen QImage und QPixmap ist, sie scheinen die gleiche Funktionalität zu bieten. Wann sollte ich ein QImage verwenden und wann sollte ich eine QPixmap verwenden?
Antworten:
Einfach beantwortet durch Lesen der Dokumente auf QImage und QPixmap :
Die QPixmap- Klasse ist eine Off-Screen- Bilddarstellung, die als Malgerät verwendet werden kann.
Die QImage- Klasse bietet eine hardwareunabhängige Bilddarstellung, die den direkten Zugriff auf die Pixeldaten ermöglicht und als Malgerät verwendet werden kann.
Bearbeiten: Auch aus @ Daves Antwort:
Sie können eine QPixmap nicht außerhalb des GUI-Threads bearbeiten, aber QImage unterliegt keiner solchen Einschränkung.
Und von @Arnold:
Hier ist eine kurze Zusammenfassung, die normalerweise (nicht immer) gilt:
- Wenn Sie ein Bild bearbeiten, ändern, Pixel ändern usw. möchten, verwenden Sie ein QImage.
- Wenn Sie dasselbe Bild mehrmals auf dem Bildschirm zeichnen möchten, konvertieren Sie es in eine QPixmap.
Es gibt eine schöne Artikelserie bei Qt Labs, die viel über das Qt-Grafiksystem erklärt. Dieser Artikel weist insbesondere einen Abschnitt über QImage
vs. QPixmap
.
Hier ist eine kurze Zusammenfassung, die normalerweise (nicht immer) gilt:
QImage
.QPixmap
.Ein wichtiger Unterschied besteht darin, dass Sie QPixmap
nur für den Haupt-GUI-Thread einen erstellen oder bearbeiten können. Sie können jedoch QImage
Instanzen in Hintergrundthreads erstellen und bearbeiten und diese dann konvertieren, nachdem Sie sie an den GUI-Thread zurückgegeben haben.
Wichtig in industriellen Umgebungen:
Die QPixmap wird auf der Grafikkarte gespeichert, die die Anzeige übernimmt. Nicht das QImage.
Wenn auf einem Server die Anwendung ausgeführt wird und eine Client-Station die Anzeige ausführt, ist dies für die Netzwerknutzung von großer Bedeutung.
Bei einer Pixmap besteht ein Neuzeichnen darin, nur den Befehl zum Neuzeichnen (einige Bytes) über das Netzwerk zu senden.
Bei einem QImage besteht es darin, das gesamte Bild zu senden (ca. einige MB).
QPixmap
ist ein "Bildobjekt", dessen pixel
Darstellung in Ihrem Code keine Rolle spielt. Daher ist QPixmap für das Rendern von Bildern auf dem Bildschirm konzipiert und optimiert. Es wird auf dem XServer gespeichert, wenn X11 verwendet wird. Das Zeichnen von QPixmap auf XWindow ist also viel schneller als das Zeichnen QBilder, da sich die Daten bereits auf dem Server befinden und einsatzbereit sind.
Verwendung von QPixmap : Wenn Sie nur ein vorhandenes Bild (Symbol .. Hintergrund .. usw.) besonders wiederholt zeichnen möchten, verwenden Sie QPixmap.
QImage ist ein "Array von Pixeln im Speicher" des Client- Codes. QImage wurde für E / A sowie für direkten Pixelzugriff und -manipulation entwickelt und optimiert.
Verwendung von QImage : Wenn Sie mit Qpaint zeichnen oder Bildpixel bearbeiten möchten.
QBitmap ist nur eine praktische QPixmap-Unterklasse, die eine Tiefe von 1 gewährleistet. Es handelt sich um eine monochrome Pixmap (1-Bit-Tiefe). Genau wie QPixmap ist QBitmap für die Verwendung des impliziten Datenaustauschs optimiert.