QCanvasImage Class
QCanvasImage ist die Bildklasse für QCanvasPainter. Mehr...
| Kopfzeile: | #include <QCanvasImage> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| Seit: | Qt 6.11 |
| Status: | Technische Vorschau |
Öffentliche Funktionen
| QCanvasImage() | |
| QCanvasImage(const QCanvasImage &image) | |
| QCanvasImage(QCanvasImage &&other) | |
| ~QCanvasImage() | |
| int | height() const |
| int | id() const |
| bool | isNull() const |
| void | setTintColor(const QColor &color) |
| QSize | size() const |
| qsizetype | sizeInBytes() const |
| void | swap(QCanvasImage &other) |
| QColor | tintColor() const |
| int | width() const |
| operator QVariant() const | |
| QCanvasImage & | operator=(QCanvasImage &&other) |
| QCanvasImage & | operator=(const QCanvasImage &image) |
Verwandte Nicht-Mitglieder
| bool | operator!=(const QCanvasImage &lhs, const QCanvasImage &rhs) |
| bool | operator==(const QCanvasImage &lhs, const QCanvasImage &rhs) |
Detaillierte Beschreibung
QCanvasImage ist die von QCanvasPainter verwendete Bildklasse. Um Bilder malen zu können, müssen sie zunächst z.B. mit QCanvasPainter::addImage() verfügbar gemacht werden. Dann können Bilder mit QCanvasPainter::drawImage() gemalt werden oder mit QCanvasImagePattern brush zum Füllen / Streichen verwendet werden.
Hier ist ein einfaches Beispiel:
static QImage logoImage(":/qtlogo.png"); // Paint an image pattern. QCanvasImage bg = painter.addImage(logoImage, QCanvasPainter::ImageFlag::Repeat | QCanvasPainter::ImageFlag::GenerateMipmaps); QCanvasImagePattern ip(bg, 0, 0, 44, 32); painter.setFillStyle(ip); painter.fillRect(50, 50, 320, 230); // Paint a single image, with tint color. QCanvasImage logo = painter.addImage(logoImage); logo.setTintColor("#2cde85"); painter.drawImage(logo, 100, 80);

Im obigen Beispiel ist QImage statisch und addImage() wird bei jeder Neuzeichnung aufgerufen. Das ist kein Problem, denn wenn das Bild und die Flags gleich bleiben, holt addImage() das Bild aus dem Cache, anstatt es erneut als Textur hochzuladen. Ein gängigerer Ansatz ist jedoch, QCanvasImage-Variablen als Klassenmitglieder zu haben und QCanvasPainter::addImage() z. B. in QCanvasPainterItemRenderer::initializeResources() aufzurufen.
Ähnlich wie bei QCanvasBrush und QCanvasOffscreenCanvas wird QCanvasImage explizit gemeinsam genutzt. Siehe Implizite Datenfreigabe und QSharedDataPointer für Details.
Hinweis: Ein QCanvasImage-Objekt enthält nur einen Handle auf eine Grafikressource, wie z.B. eine Textur. Selbst wenn eine Abtrennung erfolgt, wird die eigentliche Ressource, d.h. die zugrunde liegende Textur und die darin enthaltenen Bilddaten, niemals kopiert oder dupliziert. Der eigentliche Eigentümer der eigentlichen Grafikressource (z. B. einer QRhiTexture) ist die QCanvasPainter, die das QCanvasImage über addImage() ausgegeben hat.
Ein QCanvasImage gehört immer zu dem QCanvasPainter, der es erstellt hat. Das manuelle Entfernen von Bildern erfolgt durch den Aufruf von removeImage(). In den meisten Fällen wird dies jedoch nicht notwendig sein, da der Painter automatisch alle Bilder während seiner eigenen Zerstörung zerstört.
Dokumentation der Mitgliedsfunktionen
QCanvasImage::QCanvasImage()
Konstruiert ein Standardbild.
QCanvasImage::QCanvasImage(const QCanvasImage &image)
Konstruiert ein Bild, das eine Kopie des angegebenen image ist.
[constexpr noexcept] QCanvasImage::QCanvasImage(QCanvasImage &&other)
Move-konstruiert ein neues QCanvasImage aus other.
[noexcept] QCanvasImage::~QCanvasImage()
Zerstört das Bild.
int QCanvasImage::height() const
Gibt die Höhe des Bildes zurück.
int QCanvasImage::id() const
Gibt die Textur-ID für dieses Bild zurück. Wenn das Bild noch nicht zugewiesen wurde, gibt dies 0 zurück.
Siehe auch isNull().
bool QCanvasImage::isNull() const
Gibt true zurück, wenn das Bild noch nicht zugewiesen wurde. Siehe QCanvasPainter::addImage() für Details.
void QCanvasImage::setTintColor(const QColor &color)
Legen Sie den Farbton color des Bildes fest. Diese Farbe wird mit der Bildfarbe multipliziert, um das Bild einzufärben. Dies kann z.B. verwendet werden, um Symbole hervorzuheben oder um Bilder an das Thema anzupassen.
Siehe auch tintColor().
QSize QCanvasImage::size() const
Gibt die Größe (Breite und Höhe) des Bildes zurück.
qsizetype QCanvasImage::sizeInBytes() const
Gibt die Größe dieses Bildes in Bytes zurück.
QCanvasPainter behält keine Kopien der CPU-seitigen QImage Daten, nachdem addImage() zurückgekehrt ist. Wenn die Quelle eine offscreen canvas ist, dann gibt es überhaupt keine CPU-seitigen Bilddaten. Daher ist das Ergebnis dieser Funktion ein Näherungswert für den GPU-Speicher, der für die zugrunde liegende Textur verwendet wird.
Hinweis: Der Wert ist nur eine Schätzung basierend auf dem Bildformat und den Abmessungen. Qt hat keine Kenntnis darüber, wie die Daten für Texturen im Speicher auf der GPU-Seite gespeichert und angeordnet sind.
Hinweis: Diese Funktion berücksichtigt keine Mipmap- oder Multisample-Daten.
[noexcept] void QCanvasImage::swap(QCanvasImage &other)
Tauscht dieses Bild mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
QColor QCanvasImage::tintColor() const
Gibt die Farbtonfarbe des Bildes zurück. Der Standardwert ist Qt::white.
Siehe auch setTintColor().
int QCanvasImage::width() const
Gibt die Breite des Bildes zurück.
QCanvasImage::operator QVariant() const
Gibt das Bild als QVariant zurück.
[noexcept] QCanvasImage &QCanvasImage::operator=(QCanvasImage &&other)
Verschieben - weist other dieser QCanvasImage Instanz zu.
QCanvasImage &QCanvasImage::operator=(const QCanvasImage &image)
Weist diesem Bild die angegebene image zu und gibt einen Verweis auf dieses Bild zurück.
Verwandte Nicht-Mitglieder
[noexcept] bool operator!=(const QCanvasImage &lhs, const QCanvasImage &rhs)
Gibt true zurück, wenn sich der Bild-Handle lhs von rhs unterscheidet; andernfalls false.
Siehe auch operator==().
[noexcept] bool operator==(const QCanvasImage &lhs, const QCanvasImage &rhs)
Gibt true zurück, wenn das Bild-Handle lhs gleich rhs ist; andernfalls false.
Hinweis: Gleichheit bedeutet, dass die beiden Bildobjekte auf die gleichen Grafikressourcen verweisen und die Farbtöne gleich sind. Der Inhalt (Pixeldaten) wird nicht verglichen.
Siehe auch operator!=().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.