图像显示中的内存管理

3
我在一个wpf应用程序中有一个Image对象。源由一个下拉框改变/设置,其中有几个选项。当您更改下拉框的选项时,源会更改,您会看到不同的图像。
目前,我正在制作一个位图列表,并通过更改列表中的索引来选择图像。我对内存管理不太了解,但我认为当我制作list<bitmapimage>对象时,所有图像都会保留在内存中,但是一次只使用一张图像。因此,我有不必要的数据在内存中。
我的图像大约为300x300像素,大小可能会在未来的应用程序中增加(1000x1000像素)。目前,应用程序足够轻巧,但我想使用有效的方法显示图像。
我想知道制作图像列表是否是一个好主意。当我制作一个list对象时,我的文件位于哪里?是创建图像,将它们保存在硬盘上的临时位置,并将源附加到这些临时文件中更好呢?
我希望我表达清楚了。

这些图像是在添加到列表之前通过编程创建的吗?当所选图像发生更改时,不能在那时再创建吗? - Clemens
是的。图像是以编程方式创建的,我想每次更改选择时都制作一个新图像,但是对于1000x1000项的数组,这不是一个有效的方法,据我所知。我可以尝试并查看。 - Naresh
你总共有多少种不同的图片? - Clemens
我有大约10张图片。所以每张图片有1000x1000= 1百万像素。一个像素是4个字节(??我不确定)。这使得我的图像在内存中大约为4 MB x 10个文件= 40 MB。 - Naresh
如果您的应用程序运行的平台不会受到40 MB额外内存消耗的影响,那么您应该继续采用您的方法。 - Clemens
嗯,不是40 MB,但是未来可扩展的解决方案是一个好的方法,我认为。 - Naresh
1个回答

0

现在,如果您不是在移动设备上开发,那么内存中文件的大小不是问题。

因此,您可以将图像持久化并在需要时加载它们。

也许您可以为数据创建缓冲区和/或队列,以改善应用程序性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接