Auslesen von Bildern und Wiedergabe

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Auslesen von Bildern und Wiedergabe

    Hallo liebes Forum,
    wahrscheinlich es es für euch ein leichtes aber ich beiße mir die Zähne aus. Ich versuche in meinem Programm Bilder aus einem Ordner auszulesen und dann im Programm wiederzugeben. Das ganze habe ich bisher so geregelt das die Bilder fest im Programm Resourcen drin sind. Klappt auch ganz passabel, nur will ich die Bilder frei aus einem Zufälligen Ordner wählen. Im folgenden mein Code, wie Ihr erkennen werdet: ICH BIN EIN ANFÄNGER! Also seid nicht Sauer wenn das ganze nicht so schön aussieht...

    Zusammengefasst:
    Ordner angeben
    Bilder aus Ordner wählen
    Bild Zufällig auswählen
    Bild Anzeigen in PictureBox1

    *Hippo wieder Glücklich*

    Hier die Forms Ansicht: imgur.com/D24gVWk

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. CheckBox1.Checked = My.Settings.Musik
    4. CheckBox2.Checked = My.Settings.Bilder
    5. CheckBox3.Checked = My.Settings.Text
    6. RadioButton1.Checked = My.Settings.Herunterfahren
    7. RadioButton2.Checked = My.Settings.Neustarten
    8. RadioButton3.Checked = My.Settings.Abmelden
    9. Label1.Text = My.Settings.Ordnerpfad
    10. 'Speicherstände einspielen
    11. End Sub
    12. Public Async Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
    13. Dim imageList1 As System.Windows.Forms.ImageList
    14. My.Settings.Musik = CheckBox1.Checked
    15. My.Settings.Bilder = CheckBox2.Checked
    16. My.Settings.Text = CheckBox3.Checked
    17. My.Settings.Herunterfahren = RadioButton1.Checked
    18. My.Settings.Neustarten = RadioButton2.Checked
    19. My.Settings.Abmelden = RadioButton3.Checked
    20. My.Settings.Save()
    21. My.Settings.Reload()
    22. 'Speicherstände speichern
    23. If CheckBox1.Checked Then
    24. 'Musik die im Programm abgespielt wird
    25. My.Computer.Audio.Play(My.Resources.geil, AudioPlayMode.Background)
    26. End If
    27. If CheckBox2.Checked Then
    28. 'Bilder funktionierender versuch jedoch mit fest eingestellten Bildern
    29. Dim Wert2
    30. Randomize() ' Zufallszahlengenerator initialisieren.
    31. Wert2 = Int((4 * Rnd()) + 1) ' Zufallszahlen im Bereich von 1 bis 10 generieren.
    32. Select Case Wert2
    33. Case 1
    34. PictureBox1.Image = My.Resources.DSC_0101
    35. PictureBox1.Refresh()
    36. Case 2
    37. PictureBox1.Image = My.Resources.DSC_0079
    38. PictureBox1.Refresh()
    39. Case 3
    40. PictureBox1.Image = My.Resources.DSC_0067
    41. PictureBox1.Refresh()
    42. Case 4
    43. PictureBox1.Image = My.Resources.DSC_0103
    44. PictureBox1.Refresh()
    45. Case Else
    46. End Select
    47. End If
    48. If CheckBox3.Checked Then
    49. 'Textausgabe mit Kleiner Nachricht
    50. Dim Wert1
    51. Dim Ausgabe As String
    52. Randomize() ' Zufallszahlengenerator initialisieren.
    53. Wert1 = Int((10 * Rnd()) + 1) ' Zufallszahlen im Bereich von 1 bis 10 generieren.
    54. Select Case Wert1
    55. Case 1
    56. Ausgabe = "Text hier denken"
    57. Case 2
    58. Ausgabe = "Text hier denken"
    59. Case 3
    60. Ausgabe = "Text hier denken"
    61. Case 4
    62. Ausgabe = "Text hier denken"
    63. Case 5
    64. Ausgabe = "Text hier denken"
    65. Case 6
    66. Ausgabe = "Text hier denken"
    67. Case 7
    68. Ausgabe = "Text hier denken"
    69. Case 8
    70. Ausgabe = "Text hier denken"
    71. Case 9
    72. Ausgabe = "Text hier denken"
    73. Case 10
    74. Ausgabe = "Text hier denken"
    75. Case Else
    76. MsgBox("Hoppala da ist was schief gegangen...")
    77. End Select
    78. Dim whshell As Object
    79. whshell = CreateObject("Wscript.shell")
    80. Dim i As Integer = whshell.popup(Ausgabe, 3, "Kleine Nachricht")
    81. Debug.Print(i)
    82. End If
    83. ProgressBar1.Maximum = 50
    84. ProgressBar1.Value = 10
    85. Await Task.Delay(1000)
    86. ProgressBar1.Value = 20
    87. Await Task.Delay(1000)
    88. ProgressBar1.Value = 30
    89. Await Task.Delay(1000)
    90. ProgressBar1.Value = 40
    91. Await Task.Delay(1000)
    92. ProgressBar1.Value = 50
    93. Await Task.Delay(1000)
    94. 'Progressbar weil man es kann und es zeigt das noch was Läuft
    95. If RadioButton1.Checked = True Then
    96. 'herrunterfahren
    97. Shell("shutdown -s -t 5")
    98. ElseIf RadioButton2.Checked = True Then
    99. 'neustart
    100. Shell("shutdown -r -t 5")
    101. ElseIf RadioButton3.Checked = True Then
    102. 'abmelden
    103. Shell("shutdown -l -t 5")
    104. ElseIf RadioButton4.Checked = True Then
    105. 'abbrechen
    106. Shell("shutdown -a")
    107. End If
    108. End Sub
    109. Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    110. '****** HIER NOCH WEITER MACHEN*********
    111. Dim fbd As FolderBrowserDialog = New FolderBrowserDialog
    112. If (fbd.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then
    113. Label1.Text = fbd.SelectedPath
    114. End If
    115. My.Settings.Ordnerpfad = fbd.SelectedPath
    116. PictureBox1.Image = Image.FromFile(fbd.SelectedPath)
    117. PictureBox1.Refresh()
    118. End Sub
    119. '********Ich bin zu doof dafür
    120. End Class

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

    HappyHippoSnack schrieb:

    nur will ich die Bilder frei aus einem Zufälligen Ordner wählen
    Schaue dir dazu einmal die PictureBox.ImageLocation-Eigenschaft an...
    Du musst dort nur einen zufälligen Pfad eines Bildes aus einem bestimmten Ordner zuweisen - in etwa so (ungetestet):

    VB.NET-Quellcode

    1. Dim di = New DirectoryInfo("DeinPfad")
    2. Dim fi = di.GetFiles("*.jpg")
    3. Dim r As New Random
    4. Me.PictureBox1.ImageLocation = fi(r.Next(0, fi.Count - 1)).FullName

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

    @VB1963 SUPER :) Das läuft schon Super, manchmal steht man echt auf dem Schlauch. Vielen vielen Dank :thumbsup:

    Leider habe ich nur noch das Problem wenn ich den Code in die "Bildauswahl" packe das dann gemeckert wird weil fbd (Also der Pfad Auswahl Teil) nicht läuft. Wenn ich das ganze direkt hinter die Ordnerwahl packe geht es.
    Fehler: "fbd wurde nicht Deklariert" Nun stelle ich mir die Frage wie das kommt da es ja extra eine Public ist und so der Wert in fbd ausgelesen werden müsste. Oder habe ich da was vercheckt?
    @HappyHippoSnack

    VB.NET-Quellcode

    1. Using fbd As FolderBrowserDialog = New FolderBrowserDialog
    2. ' hier muss alles rein, mindestens bis zur Erstellung der DirectoryInfo-Instanz
    3. End Using

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es ist vollbracht, der letzte Fehler war meine eigene Doofheit. Ich habe den Pfad direkt angegeben (aus den My.Resources....)

    Visual Basic-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Public Class Form1
    4. Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. CheckBox1.Checked = My.Settings.Musik
    6. CheckBox2.Checked = My.Settings.Bilder
    7. CheckBox3.Checked = My.Settings.Text
    8. RadioButton1.Checked = My.Settings.Herunterfahren
    9. RadioButton2.Checked = My.Settings.Neustarten
    10. RadioButton3.Checked = My.Settings.Abmelden
    11. Label1.Text = My.Settings.Ordnerpfad
    12. End Sub
    13. Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. Dim fbd As FolderBrowserDialog = New FolderBrowserDialog
    15. If (fbd.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then
    16. Label1.Text = fbd.SelectedPath
    17. End If
    18. My.Settings.Ordnerpfad = fbd.SelectedPath
    19. My.Settings.Save()
    20. My.Settings.Reload()
    21. End Sub
    22. Public Async Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
    23. My.Settings.Musik = CheckBox1.Checked
    24. My.Settings.Bilder = CheckBox2.Checked
    25. My.Settings.Text = CheckBox3.Checked
    26. My.Settings.Herunterfahren = RadioButton1.Checked
    27. My.Settings.Neustarten = RadioButton2.Checked
    28. My.Settings.Abmelden = RadioButton3.Checked
    29. My.Settings.Save()
    30. My.Settings.Reload()
    31. If CheckBox1.Checked Then
    32. 'Musik
    33. My.Computer.Audio.Play(My.Resources.geil, AudioPlayMode.Background)
    34. End If
    35. If CheckBox2.Checked Then
    36. 'Bilder
    37. Dim di = New DirectoryInfo(My.Settings.Ordnerpfad)
    38. Dim fi = di.GetFiles("*.jpg")
    39. Dim r As New Random
    40. Me.PictureBox1.ImageLocation = fi(r.Next(0, fi.Count - 1)).FullName
    41. End If
    42. If CheckBox3.Checked Then
    43. 'Text
    44. Dim Wert1
    45. Dim Ausgabe As String
    46. Ausgabe = 1
    47. Randomize() ' Zufallszahlengenerator initialisieren.
    48. Wert1 = Int((20 * Rnd()) + 1) ' Zufallszahlen im Bereich von 1 bis 10 generieren.
    49. Select Case Wert1
    50. Case 1
    51. Ausgabe = "XXXXXXXXX"
    52. Case 2
    53. Ausgabe = "XXXXXXXXX"
    54. Case 3
    55. Ausgabe = "XXXXXXXXX"
    56. Case 4
    57. Ausgabe = "XXXXXXXXX"
    58. Case 5
    59. Ausgabe = "XXXXXXXXX"
    60. Case 6
    61. Ausgabe = "XXXXXXXXX"
    62. Case 7
    63. Ausgabe = "XXXXXXXXX"
    64. Case 8
    65. Ausgabe = "XXXXXXXXX"
    66. Case 9
    67. Ausgabe = "XXXXXXXXX"
    68. Case 10
    69. Ausgabe = "XXXXXXXXX"
    70. Case 11
    71. Ausgabe = "XXXXXXXXX"
    72. Case 12
    73. Ausgabe = "XXXXXXXXX"
    74. Case 13
    75. Ausgabe = "XXXXXXXXX"
    76. Case 14
    77. Ausgabe = "XXXXXXXXX"
    78. Case 15
    79. Ausgabe = "XXXXXXXXX"
    80. Case 16
    81. Ausgabe = "XXXXXXXXX"
    82. Case 17
    83. Ausgabe = "XXXXXXXXX"
    84. Case 18
    85. Ausgabe = "XXXXXXXXX"
    86. Case 19
    87. Ausgabe = "XXXXXXXXX"
    88. Case 20
    89. Ausgabe = "XXXXXXXXX"
    90. Case Else
    91. MsgBox("Hoppala da ist was schief gegangen...")
    92. End Select
    93. Dim whshell As Object
    94. whshell = CreateObject("Wscript.shell")
    95. Dim i As Integer = whshell.popup(Ausgabe, 3, "Kleine Nachricht")
    96. Debug.Print(i)
    97. End If
    98. ProgressBar1.Maximum = 50
    99. ProgressBar1.Value = 10
    100. Await Task.Delay(1000)
    101. ProgressBar1.Value = 20
    102. Await Task.Delay(1000)
    103. ProgressBar1.Value = 30
    104. Await Task.Delay(1000)
    105. ProgressBar1.Value = 40
    106. Await Task.Delay(1000)
    107. ProgressBar1.Value = 50
    108. Await Task.Delay(1000)
    109. If RadioButton1.Checked = True Then
    110. 'herrunterfahren
    111. Shell("shutdown -s -t 5")
    112. ElseIf RadioButton2.Checked = True Then
    113. 'neustart
    114. Shell("shutdown -r -t 5")
    115. ElseIf RadioButton3.Checked = True Then
    116. 'abmelden
    117. Shell("shutdown -l -t 5")
    118. ElseIf RadioButton4.Checked = True Then
    119. 'abbrechen
    120. Shell("shutdown -a")
    121. End If
    122. End Sub
    123. End Class
    Um es zu vervollständigen:
    Das Programm soll quasi ein mini tool sein um das Herunterfahren zu "verbessern" und es Persönlicher zu machen. Heißt ein nettes Bild am ende oder eine kleine Liebe Botschaft. Das war die Aufgabe vom ganzen und jene wurde erfüllt. danke an die Helfer. Top Forum!! :thumbsup: :thumbup:
    Ich habe mir jetzt nur den Teil mit den Settings angeschaut, da könntest du dir einigen Usercode ersparen:
    • z.b. kannst du die Settingseigenschaften direkt an das Control (Checkbox.Checked, Label.Text) via Designer binden
    • das Settings.Load/Save kannst du weglassen...