我正在 Windows 窗体 [VB.NET] 中制作图像滑块/轮播类型,我正在使用计时器,以便每隔一段时间将图像显示在PictureBox 中。到目前为止,程序做了我想要的,只是它给我带来了一个大问题,每次在PictureBox中加载图像时,系统的内存消耗都会增加,直到达到程序崩溃的程度。
我用来执行此任务的代码:
Dim lista As New List(Of String)
Dim i As Integer = 0
获取目录中文件的名称 (jpg) 并将它们存储在列表中。
Sub llenardatos()
Dim carpeta As New DirectoryInfo("C:\Users\Usuario\Desktop\Promo\")
For Each File As FileInfo In carpeta.GetFiles("*.jpg")
lista.Add(File.Name.ToString)
Next
End Sub
执行程序时,加载列表的第一个元素。
Private Sub frmP_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
llenardatos()
Timer1.Start()
Timer1.Interval = 3000
PictureBox1.Image = Image.FromFile("C:\Users\Usuario\Desktop\Promo\" + lista(0))
End Sub
使用 Timer,在 PictureBox 中显示列表的元素,如果它们到达末尾,则重新启动计数器。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
i = i + 1
Label1.Text = i
If i = lista.Count Then
i = 0
End If
PictureBox1.Image = Image.FromFile("C:\Users\Usuario\Desktop\Promo\" + lista(i))
End Sub
希望各位大神指点一下,这是什么原因造成的问题,需要注意的是图片很轻,因为最重的img是468KB
我认为您的问题可能是因为您没有制作
Dispose
不再使用的图像。在此前提下,并基于此答案,您应该在每次更新时处理图像
PictureBox
:VB.net 不是我的强项,所以如果我的语法错误,请原谅我。