Sur cette page

QCanvasImage Class

QCanvasImage est la classe d'image pour QCanvasPainter. Plus...

En-tête : #include <QCanvasImage>
CMake : find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Depuis : Qt 6.11
Statut : Aperçu technique

Fonctions publiques

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)
bool operator!=(const QCanvasImage &lhs, const QCanvasImage &rhs)
bool operator==(const QCanvasImage &lhs, const QCanvasImage &rhs)

Description détaillée

QCanvasImage est la classe d'image utilisée par QCanvasPainter. Pour pouvoir peindre des images, il faut d'abord les rendre disponibles avec, par exemple, QCanvasPainter::addImage(). Ensuite, les images peuvent être peintes telles quelles à l'aide de QCanvasPainter::drawImage() ou utilisées avec QCanvasImagePattern brush pour remplir / tracer.

Voici un exemple simple :

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);

Dans l'exemple ci-dessus, QImage est statique et addImage() est appelé à chaque repeinture. Ce n'est pas un problème car lorsque l'image et les drapeaux restent les mêmes, addImage() récupère l'image dans le cache au lieu de la télécharger à nouveau en tant que texture. Mais une approche plus commune est d'avoir des variables QCanvasImage comme membres de la classe et d'appeler QCanvasPainter::addImage() par exemple dans QCanvasPainterItemRenderer::initializeResources().

Comme pour QCanvasBrush et QCanvasOffscreenCanvas, QCanvasImage est explicitement partagé. Voir Implicit Data Sharing et QSharedDataPointer pour plus de détails.

Note : Un objet QCanvasImage contient seulement une poignée vers une ressource graphique, telle qu'une texture. Même lorsqu'un détachement se produit, la ressource réelle, c'est-à-dire la texture sous-jacente et les données d'image qu'elle contient, n'est jamais réellement copiée ou dupliquée. Le propriétaire réel de la ressource graphique réelle (par exemple, un QRhiTexture) est le QCanvasPainter qui a distribué le QCanvasImage via addImage().

Une QCanvasImage appartient toujours à QCanvasPainter qui l'a créée. La suppression manuelle des images s'effectue en appelant removeImage(). Dans la plupart des cas, cela ne sera pas nécessaire, puisque le peintre détruira automatiquement toutes les images lors de sa propre destruction.

Documentation des fonctions membres

QCanvasImage::QCanvasImage()

Construit une image par défaut.

QCanvasImage::QCanvasImage(const QCanvasImage &image)

Construit une image qui est une copie de l'image donnée image.

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

Move-construit une nouvelle QCanvasImage à partir de other.

[noexcept] QCanvasImage::~QCanvasImage()

Détruit l'image.

int QCanvasImage::height() const

Renvoie la hauteur de cette image.

int QCanvasImage::id() const

Renvoie l'identifiant de texture de cette image. Si l'image n'a pas encore été attribuée, la valeur retournée est 0.

Voir aussi isNull().

bool QCanvasImage::isNull() const

Retourne true si l'image n'a pas encore été attribuée. Voir QCanvasPainter::addImage() pour plus de détails.

void QCanvasImage::setTintColor(const QColor &color)

Définit la teinte color de l'image. Cette couleur sera multipliée par la couleur de l'image pour la coloriser. Cela peut être utilisé par exemple pour mettre en évidence des icônes ou pour ajuster les images en fonction du thème.

Voir aussi tintColor().

QSize QCanvasImage::size() const

Renvoie la taille (largeur et hauteur) de cette image.

qsizetype QCanvasImage::sizeInBytes() const

Renvoie la taille de cette image en octets.

QCanvasPainter ne conserve pas de copies des données côté CPU QImage une fois que addImage() a été renvoyé. Si la source est offscreen canvas, il n'y a pas de données d'image côté CPU. Par conséquent, le résultat de cette fonction est une approximation de la mémoire du GPU utilisée pour la texture sous-jacente.

Note : La valeur est seulement une estimation basée sur le format et les dimensions de l'image. Qt ne sait pas comment les données des textures sont stockées et disposées dans la mémoire du GPU.

Note : Cette fonction ne prend pas en compte les données mipmap ou multisample.

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

Remplace cette image par other. Cette opération est très rapide et n'échoue jamais.

QColor QCanvasImage::tintColor() const

Renvoie la couleur de teinte de l'image. La valeur par défaut est Qt::white.

Voir également setTintColor().

int QCanvasImage::width() const

Renvoie la largeur de cette image.

QCanvasImage::operator QVariant() const

Retourne l'image sous forme de QVariant.

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

Move-assigne other à cette instance QCanvasImage.

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

Attribue l'adresse image à cette image et renvoie une référence à cette image.

Non-membres apparentés

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

Renvoie true si l'identifiant de l'image lhs est différent de rhs; false dans le cas contraire.

Voir aussi operator==().

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

Renvoie true si l'objet image lhs est égal à rhs; false dans le cas contraire.

Remarque : l'égalité signifie que les deux objets image font référence aux mêmes ressources graphiques et que les couleurs de teinte sont identiques. Le contenu (données de pixels) n'est pas comparé.

Voir aussi 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.