我在QImage中绘制WAV文件的频谱(例如:http://savepic.net/2350314.jpg)。考虑到良好的时间分辨率,WAV文件可能足够长,无法放入屏幕。

我需要能够足够快地遍历整个文件,可能没有文件系统读取操作。

因此,我必须在内存中保留较大的QImage才能快速滚动。另一个设计会比较慢,因为每次用户滚动屏幕时都需要我重画QImage(QImages)。

假设在内存中保留了较大的QImage(例如1024x50000),那么我必须能够在程序窗口中显示该较大的QImage的某些部分。

成本最低的解决方案是什么?使用QScrollArea还是使用QPainter方法drawImage()和偏移量参数?

最佳答案

我一定会构建一个小的自定义小部件,并使用QPainter重新实现其paint()方法(并使用偏移量滚动等)。

使用QPixmap显示图像的所需部分应该比本地绘制QImage(的一部分)更快。

关于qt - Qt,仅显示大型QImage一部分的低成本方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8851649/

10-15 05:54