Подтвердить что ты не робот

В чем разница между QImage и QPixmap?

Я не понимаю, в чем разница между QImage и QPixmap, они, похоже, обладают одинаковой функциональностью. Когда следует использовать QImage и когда я должен использовать QPixmap?

4b9b3361

Ответ 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?...)