Qt, недорогой способ отображения только части большого QImage

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

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

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

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

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


person pavelkolodin    schedule 13.01.2012    source источник


Ответы (1)


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

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

person ChristopheD    schedule 13.01.2012
comment
Но чем QPixmap отличается от QImage для такого использования? - person pavelkolodin; 13.01.2012
comment
Он разработан и оптимизирован для отображения изображений на экране, см. developer.qt .nokia.com/doc/qt-4.8/qpixmap.html#details - person ChristopheD; 13.01.2012