En esta página

QCanvasImage Class

QCanvasImage es la clase de imagen para QCanvasPainter. Más...

Cabecera: #include <QCanvasImage>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Desde: Qt 6.11
Estado: Avance técnico

Funciones públicas

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)

Descripción Detallada

QCanvasImage es la clase de imagen utilizada por QCanvasPainter. Para poder pintar imagenes, primero necesitan estar disponibles con, por ejemplo, QCanvasPainter::addImage(). Luego las imágenes pueden ser pintadas tal cual usando QCanvasPainter::drawImage() o usadas con el pincel QCanvasImagePattern para rellenar/trazar.

He aquí un ejemplo sencillo:

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

En el ejemplo anterior el QImage es estático y addImage() es llamado en cada repintado. Esto no es un problema ya que cuando la imagen y las banderas siguen siendo las mismas, addImage() obtiene la imagen de la caché en lugar de cargarla de nuevo como una textura. Pero un enfoque más común es tener variables QCanvasImage como miembros de la clase y llamar a QCanvasPainter::addImage() por ejemplo en QCanvasPainterItemRenderer::initializeResources().

De forma similar a QCanvasBrush y QCanvasOffscreenCanvas, QCanvasImage se comparte explícitamente. Ver Implicit Data Sharing y QSharedDataPointer para más detalles.

Nota: Un objeto QCanvasImage contiene sólo un handle a un recurso gráfico, como una textura. Incluso cuando se produce una separación, el recurso real, es decir, la textura subyacente y los datos de la imagen en ella, nunca se copia o duplica. El propietario real del recurso gráfico real (por ejemplo, un QRhiTexture) es el QCanvasPainter que entregó el QCanvasImage a través de addImage().

Un QCanvasImage siempre pertenece al QCanvasPainter que lo creó. La eliminación manual de imágenes se realiza llamando a removeImage(). Sin embargo, en la mayoría de los casos esto no será necesario, ya que el pintor destruirá automáticamente cualquier imagen durante su propia destrucción.

Documentación de las funciones miembro

QCanvasImage::QCanvasImage()

Construye una imagen por defecto.

QCanvasImage::QCanvasImage(const QCanvasImage &image)

Construye una imagen que es una copia de la dada image.

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

Move-construye una nueva QCanvasImage a partir de other.

[noexcept] QCanvasImage::~QCanvasImage()

Destruye la imagen.

int QCanvasImage::height() const

Devuelve la altura de esta imagen.

int QCanvasImage::id() const

Devuelve el id de textura de esta imagen. Si la imagen aún no ha sido asignada, devuelve 0.

Véase también isNull().

bool QCanvasImage::isNull() const

Devuelve true si la imagen aún no ha sido asignada. Véase QCanvasPainter::addImage() para más detalles.

void QCanvasImage::setTintColor(const QColor &color)

Establezca el matiz color de la imagen. Este color se multiplicará por el color de la imagen para colorearla. Esto se puede utilizar, por ejemplo, para resaltar los iconos o para ajustar las imágenes en función del tema.

Véase también tintColor().

QSize QCanvasImage::size() const

Devuelve el tamaño (ancho y alto) de esta imagen.

qsizetype QCanvasImage::sizeInBytes() const

Devuelve el tamaño de esta imagen en bytes.

QCanvasPainter no guarda copias de los datos QImage del lado de la CPU una vez que addImage() ha retornado. Si la fuente es un offscreen canvas, entonces no hay datos de imagen del lado de la CPU en primer lugar. Por lo tanto, el resultado de esta función es una aproximación de la memoria de la GPU que se utiliza para la textura subyacente.

Nota: El valor es sólo una estimación basada en el formato y dimensiones de la imagen. Qt no tiene conocimiento de cómo se almacenan los datos de las texturas en la memoria de la GPU.

Nota: Esta función no tiene en cuenta los datos mipmap o multimuestra.

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

Intercambia esta imagen con other. Esta operación es muy rápida y nunca falla.

QColor QCanvasImage::tintColor() const

Devuelve el color de tinte de la imagen. El valor por defecto es Qt::white.

Véase también setTintColor().

int QCanvasImage::width() const

Devuelve el ancho de esta imagen.

QCanvasImage::operator QVariant() const

Devuelve la imagen como QVariant.

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

Mover-asigna other a esta instancia QCanvasImage.

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

Asigna la dirección image a esta imagen y devuelve una referencia a la misma.

No miembros relacionados

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

Devuelve true si el manejador de imagen lhs es diferente de rhs; false en caso contrario.

Véase también operator==().

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

Devuelve true si el manejador de imagen lhs es igual a rhs; false en caso contrario.

Nota: Igualdad significa que los dos objetos imagen hacen referencia a los mismos recursos gráficos y los colores de tinte son los mismos. El contenido (datos de píxeles) no se compara.

Véase también 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.