我正在使用C#Windows Forms创建游戏的地图编辑器。我需要的是一个网格,甚至需要存储几千个图像。
我的第一种方法是创建一个Panel
控件,然后向其中添加多个PictureBoxes
。不幸的是,2000张图片需要大约3秒钟才能画出来。
然后我决定尝试使用Rectangles
的{{1}}方法创建Images
并在其上绘制Panel
,以期获得更好的结果,但它仍然非常慢。< / p>
是否有更好,更有效的方法在Windows窗体中呈现如此多的图像?
提前感谢任何建议。
答案 0 :(得分:3)
使用Paint事件,但是......
作为加载图像的一部分,缓存缩放版本,其中将16个图像合并为一个,这只有125个图像,当您缩小某个比例时,切换到使用预渲染的缩小版本。
您可以根据需要随时进行多种缩放级别,并且可以随时在屏幕上保留尽可能少的图像。所以你可以再把它除以4。
我这样做是为了一个包含65536张图像(256 x 256)的地图的项目。缓存也写入磁盘,因此每次缩小时都会看到相同数量的图像。在我的编辑中,我一次只能查看16张图像,即使我正在查看整个地图。
您可以通过了解用户可用的选项(例如平移和缩放)来进一步改进这一点,这为您提供了用户可能在下一步查看的有限图像子集,因此您可以预加载这些图像以提高性能。
您最初会增加加载时间,但我敢打赌,您已经有大量加载时间从磁盘上拔出2000张图像