VB.NET PictureBox прокручивает изображения в папке - PullRequest
0 голосов
/ 21 марта 2011

В моей форме есть поле PictureBox, а также две кнопки («Назад» и «Вперед»), но я не могу найти приемлемый способ сделать то, что я хочу сделать: Прокрутка изображений в папке, как в Windows Viewer по умолчанию, с помощью стрелки.Ключи.

Есть ли эффективный способ сделать это?

Я использую Visual Basic .NET с Visual Studio 2010, если это имеет значение.

Ответы [ 2 ]

1 голос
/ 21 марта 2011

Вам нужно будет загрузить изображения, используя DirectoryInfo, а затем просмотреть их с указателем.Вот пример:

Public Class Form1
    Private files As List(Of FileInfo)
    Private currentFileIndex As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RefreshFolder("c:\path\to\your\pictures")
    End Sub

    Private Sub backButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles backButton.Click
        Advance(-1)
        ShowCurrentFile()
    End Sub

    Private Sub forwardButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles forwardButton.Click
        Advance(1)
        ShowCurrentFile()
    End Sub

    Private Sub Advance(ByVal delta As Integer)
        currentFileIndex = ((currentFileIndex + files.Count) + delta) Mod files.Count
    End Sub

    Private Sub RefreshFolder(ByRef path As String)
        Dim di As DirectoryInfo = New DirectoryInfo(path)
        files = (From c In di.GetFiles()
                Where IsFileSupported(c)
                Select c).ToList()

        If files.Count > 0 Then
            currentFileIndex = 0
        End If

        ShowCurrentFile()
    End Sub

    Private Sub ShowCurrentFile()
        If currentFileIndex <> -1 Then
            Try
                PictureBox1.Image = Image.FromFile(files(currentFileIndex).FullName)
            Catch ex As Exception
                ' TODO: handle exceptions gracefully
                Debug.WriteLine(ex.ToString)
            End Try
        End If
    End Sub

    Private Function IsFileSupported(ByRef file As FileInfo) As Boolean
        Return file.Extension = ".jpg" Or file.Extension = ".png" ' etc
    End Function
End Class   
0 голосов
/ 21 марта 2011

Вы должны быть более конкретными.если это поможет вам, вам нужно создать две подпрограммы, которые назначат следующее и предыдущее изображение для графического блока и сработают эти подпрограммы при событиях нажатия клавиш и щелчках в нижней части.

...