4

我正在为 C# Windows 窗体中的游戏创建地图编辑器。我需要的是一个必须存储数千张图像的网格。

我的第一种方法是创建一个Panel控件,然后PictureBoxes向其中添加多个控件。不幸的是,绘制 2000 张图像大约需要 3 秒。

然后我决定尝试用's 的方法创建Rectangles和绘制Images它们,希望得到更好的结果,但它仍然很慢。PanelOnPaint()

有没有更好、更有效的方法在 Windows 窗体中呈现如此多的图像?

提前感谢您的任何建议。

4

1 回答 1

2

像您一样使用 Paint 事件,但是...

作为图像加载的一部分,缓存一个缩小版本,将 16 个图像合并为一个,即只有 125 个图像,当您缩小到一定比例时,切换到使用预渲染的缩小版本。

您可以随时为多个缩放级别执行此操作,以便随时在屏幕上保留尽可能少的图像。所以你可以再次将其除以 4。

我为一个项目执行此操作,该项目的地图由 65536 张图像 (256 x 256) 组成。缓存也被写入磁盘,因此每次缩小时都会看到相同数量的图像。在我的编辑器中,我一次只能查看 16 张图像,即使我正在查看整个地图。

您可以通过了解用户可用的选项(例如平移和缩放)来进一步改进这一点,这为您提供了用户接下来可能查看的有限图像子集,因此您可以预加载这些图像以提高性能。

您最初会增加加载时间,但我敢打赌您已经有很长的加载时间从磁盘上拉出 2000 张图像

于 2012-10-31T13:44:58.013 回答