No entiendo cuál es la diferencia entre QImage y QPixmap, parecen ofrecer la misma funcionalidad. ¿Cuándo debo usar un QImage y cuándo debo usar un QPixmap?
No entiendo cuál es la diferencia entre QImage y QPixmap, parecen ofrecer la misma funcionalidad. ¿Cuándo debo usar un QImage y cuándo debo usar un QPixmap?
Respuestas:
Fácilmente respondió leyendo los documentos en QImage y QPixmap :
El QPixmap clase es una representación de imagen fuera de la pantalla que se puede utilizar como dispositivo de pintura.
La clase QImage proporciona una representación de imagen independiente del hardware que permite el acceso directo a los datos de píxeles y se puede utilizar como dispositivo de pintura.
Editar: Además, de la respuesta de @ Dave:
No puede manipular un QPixmap fuera del hilo de la GUI, pero QImage no tiene tal restricción.
Y de @Arnold:
Aquí hay un breve resumen que generalmente (no siempre) se aplica:
- Si planea manipular una imagen, modificarla, cambiar píxeles en ella, etc., use una QImage.
- Si planea dibujar la misma imagen más de una vez en la pantalla, conviértala en un QPixmap.
Hay una buena serie de artículos en Qt Labs que explican mucho sobre el sistema de gráficos Qt. Este artículo en particular tiene una sección sobre QImage
vs.QPixmap
.
Aquí hay un breve resumen que generalmente (no siempre) se aplica:
QImage
.QPixmap
.Una diferencia importante es que no puede crear ni manipular un QPixmap
en nada más que en el hilo principal de la GUI. Sin embargo, puede crear y manipular QImage
instancias en subprocesos en segundo plano y luego convertirlas después de devolverlas al subproceso de la GUI.
Importante en entornos industriales:
El QPixmap se almacena en la tarjeta de video que realiza la visualización. No la QImage.
Entonces, si tiene un servidor que ejecuta la aplicación y una estación de cliente que realiza la visualización, es muy importante en términos de uso de la red.
Con un Pixmap, un Redraw consiste en enviar solo la orden de redibujar (unos pocos bytes) por la red.
Con una QImage, consiste en enviar la imagen completa (unos pocos MB).
QPixmap
es un "objeto de imagen" cuya pixel
representación no tiene importancia en su código. Por lo tanto, QPixmap está diseñado y optimizado para representar imágenes en la pantalla de visualización, se almacena en el XServer cuando se usa X11, por lo que dibujar QPixmap en XWindow es mucho más rápido que dibujar QImages, ya que los datos ya están en el servidor y listos para usar.
Cuándo usar QPixmap : si solo desea dibujar una imagen existente (icono, fondo, etc.) especialmente repetidamente, use QPixmap.
QImage es una "matriz de píxeles en la memoria" del código del cliente , QImage está diseñado y optimizado para E / S y para el acceso directo y la manipulación de píxeles.
Cuándo usar QImage : si desea dibujar, con Qpaint, o manipular los píxeles de una imagen.
QBitmap es solo una subclase conveniente de QPixmap que garantiza una profundidad de 1, es un mapa de píxeles monocromo (profundidad de 1 bit). Al igual que QPixmap, QBitmap está optimizado para el uso de intercambio de datos implícito.