【问题标题】:VB.NET How to only show image in visible pictureboxesVB.NET 如何仅在可见图片框中显示图像
【发布时间】:2013-12-24 14:28:24
【问题描述】:

所以我正在创建一个程序,在我在运行时创建的图片框中显示来自互联网的图片。我为每张图片创建一个图片框,屏幕上一次有 6 个图片框。但问题是,当我向下滚动时,加载的图片越来越多,导致程序占用大量内存。所以我想知道如何在不处理图片的情况下“卸载”已经通过的图片,这样我就可以再次上去查看它们而无需再次从网络服务器检索它们(如果这甚至可能的话)。如果我是正确的,这应该会减少内存消耗。

我添加这张图片可能有助于理解问题。

【问题讨论】:

  • 下一个和上一个按钮一次只加载 6 个怎么样?
  • 不要存储整个图像,调整它的大小使其适合盒子,因此需要更少的内存。
  • @DonA 是的,这会起作用,但是能够向下滚动而不是单击下一个和上一个将是有益的,如果我没有收到其他回复,我可能会使用它,谢谢:)
  • @HansPassant 我目前正在这样做,我缩放图片以适应 250x250 的图片框,但是当您加载 1000 多张图片时,它开始占用大量内存
  • 显示/隐藏很容易。释放分配给图片的内存资源也不太复杂。但是您想释放内存而不必再次加载图片?!这是不可能的。您可以做的是在不可见时删除图片(并释放内存资源)并在需要时再次加载它们;但图片必须存储在某个地方(在内存或磁盘中,您必须从中加载它们)。

标签: vb.net picturebox


【解决方案1】:

将图片保存到本地磁盘,根据它们滚动的位置,只在内存中加载大约 100 个左右。

当用户滚动时,您可以从本地驱动器加载图像。如果他们滚动到尚未加载到内存中的位置,则在从本地驱动器加载图片时显示加载标志。

您将更频繁地在内存中加载/卸载,但加载的最大数量会更少。

【讨论】:

  • 这个方法不错,怎么没想到呢,谢谢
  • 没问题,很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多