Как эффективно прокручивать изображение размером 1024x90000 в окне?

У меня есть следующий интерфейс, в котором показана сонограмма (частота + время звука). Таким образом, изображение откуда-то не загружается, оно отрисовывается QPainter при чтении файла WAV .

The UI

Моя текущая реализация - это единственный огромный объект QImage , на котором рисуется изображение. И на paintEvent () я рисую часть большого QImage на виджете:

QPainter painter(this);
// (int, int, QImage*, int, int)
painter.drawImage(0, 0, *m_sonogram, 0, m_offset);

Но, как я знаю, QPixmap оптимизирован для отображения растровые изображения на экране, поэтому должен ли я преобразовывать QImage в QPixmap после рисования сонограммы?

Кроме того, стоит ли сохранять большое изображение как какое-то связанного списка отдельных QPixmap объектов меньшего размера и сделать paintEvent () более умным для работы со списком меньших объектов, чтобы избежать процедур автоматического вырезания Qt и так далее?

Когда мой QImage достаточно велик, каждое paintEvent () потребляет много CPU .

Приветствуются всевозможные советы :)

9
задан pavelkolodin 28 February 2012 в 15:34
поделиться