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

前端之家收集整理的这篇文章主要介绍了在C#Windows窗体中绘制大量图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为C# Windows Forms中的游戏创建一个地图编辑器.我需要的是一个网格,甚至需要存储几千个图像.

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

然后我决定尝试在Panel的OnPaint()方法中创建矩形并在它们上绘制图像,以期获得更好的结果,但它仍然非常慢.

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

提前感谢任何建议.

解决方法

像你一样使用Paint事件,但……

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

您可以根据需要随时进行多个缩放级别,并且可以随时在屏幕上保留尽可能少的图像.所以你可以再把它除以4.

我这样做是为了一个包含65536张图像(256 x 256)的地图的项目.缓存也写入磁盘,因此每次缩小时都会看到相同数量的图像.在我的编辑中,我一次只能看到16个图像,即使我正在查看整个地图.

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

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

猜你在找的C#相关文章