在 WPF 中管理大量图像(10,000+)的最佳方法是什么?这是用于类似于此的 2d 图 block map 编辑器:http://www.mapeditor.org/ 。
目前,我有一个 Canvas ,其中所有图 block 都作为图像,还有一个列表框,其中包含可供选择的不同图像。每个图 block 都会作为子项添加到 Canvas 中,然后存储在列表中以供以后访问。您可以通过将图 block 的 Source 属性设置为列表框中选定的图 block 来在 Canvas 上进行绘制。它适用于大约 50x50 的图 block map ,但任何超过此范围的内容都会导致加载延迟,通常应用程序速度较慢。
对此有什么建议吗? QT 可能比 wpf 更适合吗?
提前致谢
最佳答案
查看Implementing virtualized panel系列文章。
虚拟面板非常高效,因为:
只有显示的元素(以及边框周围的一些额外元素以实现平滑滚动)位于内存中(并进行渲染)。
元素被重用,而不是重复创建和丢弃 - 旧单元格只需填充新内容(提供新的 DataContext)并在新位置使用。
您还可以尝试使用 WPF 的 DataGrid 来实现此目的,它支持开箱即用的虚拟化,并且本质上就是您想要做的事情。
如果实现得当,WPF 当然能够做到这一点(如果您可以在 JavaScript 中做到这一点,那么您当然也可以在 WPF 中做到这一点)。
关于wpf - 在 WPF 中渲染大型平铺 map 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665603/