Auf dieser Seite

QCanvasImage Class

QCanvasImage ist die Bildklasse für QCanvasPainter. Mehr...

Header: #include <QCanvasImage>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Seit: Qt 6.11

Öffentliche Funktionen

QCanvasImage()
QCanvasImage(const QCanvasImage &image)
QCanvasImage(QCanvasImage &&other)
~QCanvasImage()
qreal devicePixelRatio() const
int height() const
int id() const
bool isNull() const
void setTintColor(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)
bool operator!=(const QCanvasImage &lhs, const QCanvasImage &rhs)
bool operator==(const QCanvasImage &lhs, const QCanvasImage &rhs)

Ausführliche Beschreibung

QCanvasImage ist die Bildklasse, die von QCanvasPainter verwendet wird. Um Bilder zeichnen zu können, müssen diese zunächst beispielsweise mit QCanvasPainter::addImage() bereitgestellt werden. Anschließend können Bilder unverändert mit QCanvasPainter::drawImage() gezeichnet oder mit einem Pinsel vom Typ QCanvasImagePattern zum Füllen oder Umranden 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);

Grün getöntes Qt-Logo vor einem Hintergrund aus kleinen, nebeneinander angeordneten Qt-Logos

Im obigen Beispiel ist ` QImage ` statisch und `addImage()` wird bei jedem Neuzeichnen aufgerufen. Dies ist kein Problem, da `addImage()` das Bild aus dem Cache holt, anstatt es erneut als Textur hochzuladen, solange das Bild und die Flags unverändert bleiben. Ein häufigerer Ansatz ist jedoch, `QCanvasImage`-Variablen als Klassenmitglieder zu definieren und ` QCanvasPainter::addImage()` beispielsweise in ` QCanvasPainterItemRenderer::initializeResources()` aufzurufen.

Ähnlich wie bei ` QCanvasBrush ` und ` QCanvasOffscreenCanvas` wird `QCanvasImage` explizit gemeinsam genutzt. Weitere Informationen finden Sie unter „Implicit Data Sharing “ und „ QSharedDataPointer “.

Hinweis: Ein QCanvasImage-Objekt enthält lediglich einen Zeiger auf eine Grafikressource, wie z. B. eine Textur. Selbst wenn eine Trennung (detach) erfolgt, wird die eigentliche Ressource, d. h. die zugrunde liegende Textur und die darin enthaltenen Bilddaten, niemals tatsächlich kopiert oder dupliziert. Der eigentliche Eigentümer der realen Grafikressource (z. B. ein „ QRhiTexture “) ist das „ QCanvasPainter “, das das „QCanvasImage“ über „ addImage()“ bereitgestellt hat.

Ein `QCanvasImage` gehört immer dem ` QCanvasPainter `, der es erstellt hat. Das manuelle Entfernen von Bildern erfolgt durch den Aufruf von ` removeImage()`. In den meisten Fällen ist dies jedoch nicht erforderlich, da der Painter alle Bilder bei seiner eigenen Zerstörung automatisch vernichtet.

Dokumentation der Mitgliedsfunktionen

QCanvasImage::QCanvasImage()

Erstellt ein Standardbild.

QCanvasImage::QCanvasImage(const QCanvasImage &image)

Erstellt ein Bild, das eine Kopie des angegebenen „ image “ ist.

[constexpr noexcept default] QCanvasImage::QCanvasImage(QCanvasImage &&other)

Erstellt ein neues `QCanvasImage` aus ` other`.

[noexcept] QCanvasImage::~QCanvasImage()

Zerstört das Bild.

qreal QCanvasImage::devicePixelRatio() const

Gibt das Gerätepixelverhältnis für das Bild zurück. Dabei handelt es sich um das Verhältnis zwischen Gerätepixeln und geräteunabhängigen Pixeln.

Ein „ QCanvasImage “ mit einem Gerätepixelverhältnis größer als 1 wendet diesen Skalierungsfaktor bei der Verwendung des Bildes an. Beispielsweise entspricht „ drawImage(image, 0, 0) “ dann „ drawImage(image, 0, 0, image.width() / image.devicePixelRatio(), image.height() / image.devicePixelRatio()) “.

Der Standardwert ist 1,0.

Der Wert wird von dem „ QImage “ übernommen, aus dem der „ QCanvasImage “ erstellt wurde. Ein „ QCanvasImage “, das aus einer Textur oder einem „ offscreen canvas “ erstellt wurde, hat immer ein Gerätepixelverhältnis von 1.

Siehe auch „ QImage “.

int QCanvasImage::height() const

Gibt die Höhe dieses Bildes in Pixeln zurück;

int QCanvasImage::id() const

Gibt die Textur-ID für dieses Bild zurück. Wenn dem Bild noch keine Textur zugewiesen wurde, wird 0 zurückgegeben.

Siehe auch isNull().

bool QCanvasImage::isNull() const

Gibt „true“ zurück, wenn das Bild noch nicht zugewiesen wurde. Weitere Informationen finden Sie unter QCanvasPainter::addImage().

void QCanvasImage::setTintColor(QColor color)

Legen Sie den Farbton color des Bildes fest. Diese Farbe wird mit der Bildfarbe multipliziert, um das Bild einzufärben. Dies kann beispielsweise verwendet werden, um Symbole hervorzuheben oder Bilder an das Design anzupassen.

Siehe auch tintColor().

QSize QCanvasImage::size() const

Gibt die Größe (Breite und Höhe) dieses Bildes in Pixeln zurück.

qsizetype QCanvasImage::sizeInBytes() const

Gibt die Größe dieses Bildes in Byte zurück.

QCanvasPainter Es werden keine Kopien der CPU-seitigen „ QImage “-Daten beibehalten, sobald „ addImage()“ zurückgegeben hat. Handelt es sich bei der Quelle um ein „ offscreen canvas “, liegen von vornherein keine CPU-seitigen Bilddaten vor. Daher ist das Ergebnis dieser Funktion eine Annäherung an den GPU-Speicher, der für die zugrunde liegende Textur verwendet wird.

Hinweis: Der Wert ist lediglich eine Schätzung, die auf dem Bildformat und den Abmessungen basiert. Qt hat keine Kenntnis darüber, wie die Daten für Texturen auf der GPU-Seite im Speicher abgelegt und angeordnet sind.

Hinweis: Diese Funktion berücksichtigt keine Mipmap- oder Multisample-Daten.

[noexcept] void QCanvasImage::swap(QCanvasImage &other)

Ersetzt dieses Bild durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

QColor QCanvasImage::tintColor() const

Gibt die Farbnuance des Bildes zurück. Der Standardwert ist „ Qt::white “.

Siehe auch setTintColor().

int QCanvasImage::width() const

Gibt die Breite dieses Bildes in Pixeln zurück.

QCanvasImage::operator QVariant() const

Gibt das Bild als „ QVariant “ zurück.

[noexcept] QCanvasImage &QCanvasImage::operator=(QCanvasImage &&other)

Weist „ other “ dieser „ QCanvasImage “-Instanz zu.

QCanvasImage &QCanvasImage::operator=(const QCanvasImage &image)

Weist diesem Bild die angegebene „ image “ zu und gibt eine Referenz auf dieses Bild zurück.

Verwandte Nicht-Mitglieder

[noexcept] bool operator!=(const QCanvasImage &lhs, const QCanvasImage &rhs)

Gibt „ true “ zurück, wenn sich das 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 “ mit „ rhs “ übereinstimmt; andernfalls „ false “.

Hinweis: Gleichheit bedeutet, dass die beiden Bildobjekte auf dieselben Grafikressourcen verweisen und die Farbtöne identisch 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.