在C#Windows窗体中绘制大量图像

Pio*_*cki 5 c# image panel picturebox winforms

我正在为C#Windows Forms中的游戏创建一个地图编辑器.我需要的是一个网格,甚至需要存储几千个图像.

我的第一种方法是创建一个Panel控件,然后添加多个控件PictureBoxes.不幸的是,2000张图片需要大约3秒钟才能画出

然后我决定尝试用它们的方法创建Rectangles和绘制Images它们以期获得更好的结果,但它仍然非常慢.PanelOnPaint()

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

提前感谢任何建议.

Jam*_*ass 2

像您所做的那样使用 Paint 事件,但是......

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

您可以根据需要对多个缩放级别执行此操作,并始终在屏幕上保留尽可能少的图像。所以你可以再除以 4。

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

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

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