我正在显示构建为 QGraphicsPixmapitem 项目矩形的地图(每个项目代表一个地图图块)。因为我的地图非常大(大约 30 MB 的 PNG 文件),我希望能够按需加载像素图,仅当它们在 QGraphicsView 中对用户可见并在它们变得不可见时卸载。
有没有办法找出可见的场景矩形?
这为您提供了可见的场景矩形:
sceneRect = graphicsView.mapToScene(graphicsView.rect()).boundingRect()
Run Code Online (Sandbox Code Playgroud)
如果存在剪切或旋转变换,它会为您提供可见场景区域的边界矩形。如果您没有这样的转换(仅平移或缩放),则返回的矩形就是准确的场景区域。
现在,对于在场景中有效地显示巨大的瓷砖地图的真正问题是什么?您可以在后台加载图块,然后首先评估您的 Qt 框架是否尚未针对可见范围之外的大像素图进行优化。30 MB 听起来也没有太大以至于无法放入内存。
| 归档时间: |
|
| 查看次数: |
5869 次 |
| 最近记录: |