Qt, недорогой способ отображения только части большого QImage - PullRequest
1 голос
/ 13 января 2012

Я рисую частотный спектр WAV-файла внутри QImage (пример: http://savepic.net/2350314.jpg). WAV-файл может быть достаточно длинным, чтобы не помещаться на экране, учитывая хорошее разрешение по времени.

Мне нужно достаточно быстро выполнить srcoll через весь файл, возможно, без операций чтения файловой системы.

Так что я должен держать большой QImage в памяти для быстрой прокрутки. Другое решение будет медленнее, потому что мне потребуется перерисовывать QImage (QImages) каждый раз, когда пользователь прокручивает экран.

Принимая решение о сохранении большого QImage в памяти (например, 1024x50000), я должен иметь возможность отображать некоторую часть этого большого QImage в окне программы.

Какое решение с наименьшей стоимостью? Используя QScrollArea или, возможно, используя метод QPainter drawImage () со смещенными аргументами?

1 Ответ

1 голос
/ 13 января 2012

Я бы определенно создал небольшой пользовательский виджет и переопределил бы его метод paint () с помощью QPainter (и прокрутки со смещениями и т. Д.).

Использование QPixmap для отображения необходимых частей изображения должно быть быстрее, чем собственно рисование (часть) QImage.

...