Я не понимаю, в чем разница между QImage и QPixmap, они, похоже, обладают одинаковой функциональностью. Когда следует использовать QImage и когда я должен использовать QPixmap?
В чем разница между QImage и QPixmap?
Ответ 1
Легко ответил, прочитав документы QImage и QPixmap:
Класс QPixmap представляет собой представление изображения вне экрана, которое может использоваться как устройство рисования.
Класс QImage предоставляет аппаратно-независимое представление изображения, которое обеспечивает прямой доступ к данным пикселя и может использоваться как устройство рисования.
Изменить: Кроме того, из ответа @Dave:
Вы не можете манипулировать QPixmap вне GUI-потока, но QImage не имеет таких ограничений.
И из @Arnold:
Здесь приводится краткое резюме, которое обычно (не всегда):
- Если вы планируете манипулировать изображением, измените его, измените на нем пиксели, и т.д., используйте QImage.
- Если вы планируете нарисовать одно и то же изображение более одного раза на экране преобразуйте его в QPixmap.
Ответ 2
В Qt Labs есть хорошая серия статей, которая многое объясняет в графической системе Qt. В этой статье, в частности, есть раздел о QImage
vs. QPixmap
.
Здесь приводится краткое резюме, которое обычно (не всегда):
- Если вы планируете манипулировать изображением, изменяете его, меняете пиксели на нем и т.д., используйте
QImage
. - Если вы планируете нарисовать одно и то же изображение более одного раза на экране, преобразуйте его в
QPixmap
.
Ответ 3
Важным отличием является то, что вы не можете создавать или манипулировать QPixmap
ничем, кроме основного потока графического интерфейса. Тем не менее, вы можете создавать экземпляры QImage
для фоновых потоков и обрабатывать их, а затем преобразовывать их после передачи их обратно в поток графического интерфейса пользователя.
Ответ 4
Важно в промышленной среде:
QPixmap хранится на видеокарте, которая делает дисплей. Не QImage.
Итак, если у вас есть сервер, на котором запущено приложение, и клиентская станция, работающая с дисплеем, очень важна с точки зрения использования сети.
С помощью Pixmap Redraw состоит в отправке по сети только порядка перерисовки (несколько октетов). Он состоит в отправке всего изображения с помощью QImage (несколько Mo?...)