Vb.net 在visual basic中滚动不同的图像作为背景

Vb.net 在visual basic中滚动不同的图像作为背景,vb.net,winforms,background-image,Vb.net,Winforms,Background Image,从用户从硬盘上任何给定文件夹中预选的图像更改VB应用程序中的背景图像的最佳和最简单的方法是什么 假设“Mike”在自然文件夹的D:\images\Nature中选择了一些图像,比如说“20”个图像。现在VB应用程序读取并保存路径,以便下次再次打开它从该文件夹获取的图像。每隔几秒,比如说45秒,就会加载一个新图像作为背景。当用户选择一个图片文件夹时,将该文件夹存储在注册表中。 当程序加载时,从注册表中获取文件夹。 您可以这样保存它: SaveSetting ("mayappname","setti

从用户从硬盘上任何给定文件夹中预选的图像更改VB应用程序中的背景图像的最佳和最简单的方法是什么


假设“Mike”在自然文件夹的D:\images\Nature中选择了一些图像,比如说“20”个图像。现在VB应用程序读取并保存路径,以便下次再次打开它从该文件夹获取的图像。每隔几秒,比如说45秒,就会加载一个新图像作为背景。

当用户选择一个图片文件夹时,将该文件夹存储在注册表中。 当程序加载时,从注册表中获取文件夹。 您可以这样保存它:

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张用户选择的图片之间旋转,请更改程序以将这些图片名称存储在ImageNames列表中。然后将此列表存储在注册表、文件或数据库中。当程序加载时,恢复列表,您就可以使用上面的代码,几乎不做任何更改。

您使用的是Windows窗体、Web窗体还是什么?您的意思是只为您的应用程序提供背景,对吗?“现在是整个Windows桌面了吗?”约翰·桑德斯说