SlideShow Effekt mit einer PictureBox?!

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Thunderbolt.

    SlideShow Effekt mit einer PictureBox?!

    Moin Moin Zusammen (schon wieder :whistling: ),

    ich google mich nun schon seit einer ganzen Weile durchs netz nach lösungsansätzen (die auch unter VB.Net 2010) funktionieren...
    Ich habe eine PictureBox, in der mehrere Bilder nacheinander dargestellt werden...
    Nun will ich die Übergänge etwas smoother machen 8-)
    Aufstellung ist eine ListBox1 und eine PictureBox1,
    in der ListBox1 sind alle Bilddaten (samt Pfadangabe) hinterlergt die aus einem Ordner, inkl. Subdirs ausgelesen wird...
    Hier werden NUR jpg Daten übernommen...

    Beispieldownload: *zensiert*

    Jetzt möchte ich die Bilder aber nicht "stumpf" "ein und ausschalten" sondern schon ein wenig "effektvoller" überblenden...
    Ich hab nur keine Plan wo ich ansetzen soll ;(

    Im Internet komm ich immer nur auf das, was ich selbst schon realisiert bekommen habe,...

    Danke schon mal,...

    Grüße samson

    Keine ausführbaren Dateien außerhalb des Showrooms -> Link entfernt. ~Thunderbolt
    Nein! Doch! OHH!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Ich würde entweder zu WPF oder GDI+ raten. Letzteres hat schlechtere Performance, ist aber einfacher zu integrieren, bei WPF müsstest du dich in MVVM einarbeiten und dann das Projekt neuanfangen, dafür wäre das Ergebnis viel besser.
    @nafets erledigt ;)
    Ich kenn mich da nicht so aus mit den ganzen Freigabeeinstellungen für Youtube... bin da einfacher User :D

    Das Embed geht immernoch nicht :D

    <iframe src="https://www.youtube-nocookie.com/embed/3SdooE9_g3w?wmode=transparent" allowfullscreen="" height="315" width="560"></iframe>
    Nein! Doch! OHH!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „samson“ ()

    Hier der komplette Code, wie ich ihn derzeit verwende...

    Was ist eingebaut:
    Listbox1
    Picturebox1
    Ein Menüband
    Ein Statusband

    Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Drawing.Printing
    3. Public Class Form1
    4. Public dir As String
    5. Private index As Integer
    6. Private subdir As String
    7. Private filename As String
    8. Private filedir As String
    9. Public Sub ChooseFolder()
    10. Dim FolderSize As Long = 0
    11. ToolStripStatusLabel7.Text = 0
    12. If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
    13. ListBox1.Items.Clear()
    14. Try
    15. Dim di As New System.IO.DirectoryInfo(FolderBrowserDialog1.SelectedPath)
    16. For Each fi As System.IO.FileInfo In di.GetFiles("*.jpg", subdir)
    17. filename = IO.Path.GetFileName(fi.FullName)
    18. filedir = IO.Path.GetDirectoryName(fi.FullName)
    19. FolderSize += My.Computer.FileSystem.GetFileInfo(filedir & "\" & filename).Length
    20. ListBox1.Items.Add(filedir & "\" & filename)
    21. Next
    22. ToolStripStatusLabel8.Text = ListBox1.Items.Count - 1
    23. StartToolStripMenuItem.Enabled = True
    24. ListBox1.SetSelected(0, True)
    25. Catch
    26. End Try
    27. End If
    28. If Format(FolderSize / 1024 / 1024, "#0") > 1024 Then
    29. ToolStripStatusLabel7.Text = Format(FolderSize / 1024 / 1024 / 1024, "#0.00") & " GB"
    30. ElseIf Format(FolderSize / 1024, "#0") > 1024 Then
    31. ToolStripStatusLabel7.Text = Format(FolderSize / 1024 / 1024, "#0.00") & " MB"
    32. Else
    33. ToolStripStatusLabel7.Text = Format(FolderSize / 1024, "#0.00") & " KB"
    34. End If
    35. End Sub
    36. Private Sub PfadWählenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PfadWählenToolStripMenuItem.Click
    37. ChooseFolder()
    38. End Sub
    39. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    40. index = ListBox1.SelectedIndex + 1
    41. If index > ListBox1.Items.Count - 1 Then
    42. index = -1
    43. Else
    44. PictureBox1.Image.Dispose()
    45. ListBox1.SetSelected(index, True)
    46. End If
    47. End Sub
    48. Private Sub StartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartToolStripMenuItem.Click
    49. Timer1.Enabled = True
    50. StartToolStripMenuItem.Enabled = False
    51. PauseToolStripMenuItem.Enabled = True
    52. StopToolStripMenuItem.Enabled = True
    53. End Sub
    54. Private Sub PauseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PauseToolStripMenuItem.Click
    55. Timer1.Enabled = False
    56. StartToolStripMenuItem.Enabled = True
    57. PauseToolStripMenuItem.Enabled = False
    58. StopToolStripMenuItem.Enabled = True
    59. End Sub
    60. Private Sub StopToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StopToolStripMenuItem.Click
    61. Timer1.Enabled = False
    62. 'ListBox1.SetSelected(0, True)
    63. StartToolStripMenuItem.Enabled = True
    64. PauseToolStripMenuItem.Enabled = False
    65. StopToolStripMenuItem.Enabled = False
    66. End Sub
    67. Private Sub OptionToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionToolStripMenuItem.Click
    68. If Timer1.Enabled = True Then
    69. Timer1.Enabled = False
    70. StartToolStripMenuItem.Enabled = True
    71. PauseToolStripMenuItem.Enabled = False
    72. StopToolStripMenuItem.Enabled = True
    73. End If
    74. Dialog1.Show()
    75. End Sub
    76. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    77. Timer1.Interval = My.Settings.slidespeed & "000"
    78. If My.Settings.subdir = 1 Then
    79. subdir = SearchOption.AllDirectories
    80. Else
    81. subdir = SearchOption.TopDirectoryOnly
    82. End If
    83. End Sub
    84. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    85. Me.Close()
    86. End Sub
    87. Private Sub ListBox1_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    88. PictureBox1.Image = Image.FromFile(ListBox1.SelectedItem)
    89. 'ToolStripStatusLabel5.Text = Format(My.Computer.FileSystem.GetFileInfo(ListBox1.SelectedItem).Length / 1024 / 1024, "#0.00 MB")
    90. ToolStripStatusLabel10.Text = PictureBox1.Image.Height & "px"
    91. ToolStripStatusLabel12.Text = PictureBox1.Image.Width & "px"
    92. ToolStripStatusLabel1.Text = ListBox1.SelectedItem
    93. If Format(My.Computer.FileSystem.GetFileInfo(ListBox1.SelectedItem).Length / 1024 / 1024, "#0.00") > 1024 Then
    94. ToolStripStatusLabel5.Text = Format(My.Computer.FileSystem.GetFileInfo(ListBox1.SelectedItem).Length / 1024 / 1024 / 1024, "#0.00") & " GB"
    95. ElseIf Format(My.Computer.FileSystem.GetFileInfo(ListBox1.SelectedItem).Length / 1024, "#0.00") > 1024 Then
    96. ToolStripStatusLabel5.Text = Format(My.Computer.FileSystem.GetFileInfo(ListBox1.SelectedItem).Length / 1024 / 1024, "#0.00") & " MB"
    97. Else
    98. ToolStripStatusLabel5.Text = Format(My.Computer.FileSystem.GetFileInfo(ListBox1.SelectedItem).Length / 1024, "#0.00") & " KB"
    99. End If
    100. End Sub
    101. Private Sub ÜberToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÜberToolStripMenuItem.Click
    102. AboutBox1.Show()
    103. Me.Enabled = False
    104. End Sub
    105. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    106. Dim gr As Graphics = e.Graphics
    107. ' Verweis auf das Bild festlegen
    108. Dim oImage As Image = PictureBox1.Image
    109. Dim rr = e.MarginBounds
    110. gr.DrawImage(oImage, rr)
    111. 'gr.Dispose()
    112. End Sub
    113. Private Sub DruckenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DruckenToolStripMenuItem.Click
    114. With PrintDocument1
    115. ' Dokument-Title
    116. .DocumentName = "Print Picture"
    117. ' Ausdruck starten
    118. If PrintDialog1.ShowDialog = DialogResult.OK Then
    119. PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
    120. PrintDocument1.Print()
    121. End If
    122. End With
    123. End Sub
    124. Private Sub VorschauToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles VorschauToolStripMenuItem.Click
    125. ' Vorschaudialog erstellen und anzeigen.
    126. Dim ppdld As New PrintPreviewDialog()
    127. With ppdld
    128. ' Der Druckvorschau das Dokument zuweisen.
    129. .Document = PrintDocument1
    130. ' Die Druckvorschau soll maximiert gezeigt werden.
    131. .WindowState = FormWindowState.Maximized
    132. ' Druckvorschau anzeigen.
    133. .ShowDialog(Me)
    134. End With
    135. ppdld = Nothing
    136. End Sub
    137. End Class


    Screeshot:

    Nein! Doch! OHH!