Когда пользователь выбирает папку с изображениями, сохраняйте папку в реестре.
Когда программа загрузится, извлеките папку из реестра.
Вы можете сохранить его так:
SaveSetting ("mayappname","settings","picturefolder",PicFolderName)
и восстановить папку при загрузке программы:
Dim PicFolderName As String = GetSetting("mayappname", "settings", "picturefolder", My.Computer.FileSystem.SpecialDirectories.MyDocuments)
Этот пример читает ВСЕ jpg-изображения в папке и меняет изображение каждые 45 секунд на следующее изображение в папке. Если вы хотите, чтобы пользователь мог выбрать 20 изображений и вращаться между ними, дайте мне знать, тогда мы должны сохранить каждое изображение, выбранное пользователем, и вращаться только между ними. Но этот код вращается между всеми картинками в выбранной папке.
Полагаю, вы знаете, как изменить его, чтобы он работал только с изображениями, выбранными пользователем. Я не буду давать этот ответ, потому что это может быть сделано многими способами, поэтому мне нужно больше информации о том, как вы хотите, чтобы взаимодействие между пользователем и программой было до того, как я это сделаю.
Хорошо. Если у вас есть код, который хранит папку в реестре, вставьте его в форму, чтобы каждые 45 секунд изменять изображение из изображений в выбранной папке:
Private ImageNames As New List(Of String)
Private ImageIndexNow As Integer = 0
Private PictureTimer As New Timer
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Get the saved path for where the images are stored.
Dim PicFolderName As String = GetSetting("mayappname", "settings", "picturefolder", My.Computer.FileSystem.SpecialDirectories.MyDocuments)
'PicFolderName="c:\mypictures" ' remove rem if you just want to test with a specific folder
'Call sub that read in all names of images in that path.
LoadImageNames(PicFolderName)
PictureTimer.Interval = 45000 '45 seconds
PictureTimer.Enabled = True
AddHandler PictureTimer.Tick, AddressOf PictureTimer_Tick
End Sub
Sub LoadImageNames(ByVal ImagePath As String)
'Load image names in a list of strings for the provided Imagepath
For Each file As String In IO.Directory.GetFiles(ImagePath , "*.jpg")
ImageNames.Add(file)
Next
End Sub
Private Sub PictureTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
'set background image of the form to image number imageIndexNow in the list of images
Me.BackgroundImageLayout = ImageLayout.Stretch
Me.BackgroundImage = Image.FromFile(ImageNames(ImageIndexNow))
ImageIndexNow += 1 ' Add one to the number so next picture is selected next time the timer-tick is fired.
If ImageIndexNow > ImageNames.Count-1 Then ImageIndexNow = 0 ' Start from zero if imageIndexNow is larger than amount of images.
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
RemoveHandler PictureTimer.Tick, AddressOf PictureTimer_Tick
End Sub
Если вы хотите изменить это, чтобы повернуть только между 20 выбранными пользователем изображениями, измените программу, чтобы сохранить имена этих изображений в списке изображений изображений. И затем сохранить этот список в реестре, файле или базе данных. Когда программа загрузится, восстановите список, и вы сможете использовать приведенный выше код практически без изменений.