加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:49:02 所属栏目:百科 来源:网络整理
导读:我正在为C# Windows Forms中的游戏创建一个地图编辑器.我需要的是一个网格,甚至需要存储几千个图像. 我的第一种方法是创建一个Panel控件,然后添加多个PictureBox.不幸的是,2000张图片需要大约3秒钟才能画出 然后我决定尝试在Panel的OnPaint()方法中创建矩形
我正在为C# Windows Forms中的游戏创建一个地图编辑器.我需要的是一个网格,甚至需要存储几千个图像.

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

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

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

提前感谢任何建议.

解决方法

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读