Sur cette page

QCanvasImage Class

QCanvasImage est la classe d'image pour QCanvasPainter. En savoir plus...

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

Fonctions publiques

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)

Description détaillée

QCanvasImage est la classe d’image utilisée par QCanvasPainter. Pour pouvoir dessiner des images, celles-ci doivent d’abord être mises à disposition, par exemple avec QCanvasPainter::addImage(). Les images peuvent ensuite être dessinées telles quelles à l’aide de QCanvasPainter::drawImage() ou utilisées avec QCanvasImagePattern pinceau pour remplir ou tracer un contour.

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

Logo Qt de couleur verte dessiné sur un fond composé de petits logos Qt disposés en mosaïque

Dans l’exemple ci-dessus, la variable ` QImage ` est statique et la fonction `addImage()` est appelée à chaque rafraîchissement. Cela ne pose pas de problème, car lorsque l’image et les indicateurs restent identiques, `addImage()` récupère l’image depuis le cache au lieu de la télécharger à nouveau en tant que texture. Mais une approche plus courante consiste à définir des variables QCanvasImage en tant que membres de classe et à appeler QCanvasPainter::addImage() par exemple dans QCanvasPainterItemRenderer::initializeResources().

Tout comme dans QCanvasBrush et QCanvasOffscreenCanvas, QCanvasImage est explicitement partagé. Voir Partage implicite des données et QSharedDataPointer pour plus de détails.

Remarque : un objet QCanvasImage ne contient qu’un descripteur vers une ressource graphique, telle qu’une texture. Même en cas de détachement, 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 ni dupliquée. Le véritable propriétaire de la ressource graphique réelle (par exemple, un ` QRhiTexture`) est l’ QCanvasPainter qui a fourni le `QCanvasImage` via ` addImage()` ().

Un QCanvasImage appartient toujours à l’ QCanvasPainter qui l’a créé. La suppression manuelle des images s’effectue en appelant removeImage(). Dans la plupart des cas, cela ne sera toutefois pas nécessaire, car le « painter » détruira automatiquement toutes les images lors de sa propre destruction.

Documentation des fonctions membres

QCanvasImage::QCanvasImage()

Crée une image par défaut.

QCanvasImage::QCanvasImage(const QCanvasImage &image)

Crée une image qui est une copie de l'image.

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

Crée par « move » un nouvel objet `QCanvasImage` à partir de ` other`.

[noexcept] QCanvasImage::~QCanvasImage()

Cela détruit l'image.

qreal QCanvasImage::devicePixelRatio() const

Renvoie le rapport de pixels de l'appareil pour l'image. Il s'agit du rapport entre les pixels de l'appareil et les pixels indépendants de l'appareil.

Un « QCanvasImage » dont le rapport de pixels de l'appareil est supérieur à 1 applique ce facteur d'échelle lors de l'utilisation de l'image. Par exemple, drawImage(image, 0, 0) équivaut alors à drawImage(image, 0, 0, image.width() / image.devicePixelRatio(), image.height() / image.devicePixelRatio()).

La valeur par défaut est 1,0.

Cette valeur est héritée de l’ QImage à partir de laquelle l’ QCanvasImage a été créée. Une QCanvasImage créée à partir d’une texture ou d’un offscreen canvas présente toujours un ratio de pixels de périphérique égal à 1.

Voir également « QImage ».

int QCanvasImage::height() const

Renvoie la hauteur de cette image en pixels ;

int QCanvasImage::id() const

Renvoie l'identifiant de texture de cette image. Si l'image n'a pas encore été attribuée, cette fonction renvoie 0.

Voir aussi isNull().

bool QCanvasImage::isNull() const

Renvoie « true » si l'image n'a pas encore été attribuée. Pour plus d'informations, consultez la fonction QCanvasPainter::addImage().

void QCanvasImage::setTintColor(QColor color)

Définit la teinte color de l'image. Cette couleur sera multipliée par la couleur de l'image pour la colorer. Cette fonction peut être utilisée, par exemple, pour mettre en valeur des icônes ou pour adapter les images au thème.

Voir aussi tintColor().

QSize QCanvasImage::size() const

Renvoie les dimensions (largeur et hauteur) de cette image en pixels.

qsizetype QCanvasImage::sizeInBytes() const

Renvoie la taille de cette image en octets.

QCanvasPainter Ne conserve pas de copies des données d'QImage s côté CPU une fois que la fonction ` addImage()` a renvoyé sa valeur. Si la source est un ` offscreen canvas`, il n'y a de toute façon 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 GPU utilisée pour la texture sous-jacente.

Remarque : cette valeur n’est qu’une estimation basée sur le format et les dimensions de l’image. Qt n’a aucune information sur la manière dont les données des textures sont stockées et organisées en mémoire côté GPU.

Remarque : cette fonction ne prend pas en compte les données de mipmap ni de multisample.

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

Remplace cette image par celle de other. Cette opération est très rapide et ne pose jamais de problème.

QColor QCanvasImage::tintColor() const

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

Voir aussi setTintColor().

int QCanvasImage::width() const

Renvoie la largeur de cette image en pixels.

QCanvasImage::operator QVariant() const

Renvoie l'image sous la forme d'un objet ` QVariant`.

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

Cette opération attribue l'other à cette instance QCanvasImage.

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

Attribue l'image ion indiquée à cette image et renvoie une référence à cette image.

Éléments associés (non-membres)

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

Renvoie « true » si le descripteur d'image « lhs » est différent de « rhs » ; « false » dans le cas contraire.

Voir également operator==().

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

Renvoie « true » si le descripteur d'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 également 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.