Bild in Picturebox alle 3 Monate ändern

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

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    Aufgrund welcher Informationen würde sich das Bild ändern? Wer würde angeben, welches Bild nun "aktiv" wäre?
    Greifst du auf ein Laufwerk zu, Netzlaufwerk oder würdest du dieses Bild im Internet runterladen?
    Ab wann würde denn dieser Zyklus beginnen?

    Gruß,
    Drahuverar
    Option Strict On!
    Hallo,

    würde die folgende Ansätze geben:

    1.Speicher dir das Datum (DateTime Format) beim Wechseln des Bildes (MySettings oder Textdatei oder Ini Datei (das wäre jedem selbst überlassen aber so hast du da ein paar Begriffe zum Arbeiten)
    2.Prüfe dann beim Start des Programmes oder alle X Stunden ob seit dem letztem Wechsel mehr oder gleich 3 Monate vergangen sind. (TimeSpan / DateTime / If Abfrage)
    3.Wenn ja dann wechsel das Bild und fang bei 1 an. Wenn nicht dann tu nichts.

    Ansonsten wären auf jedenfall die Grundlagen von Vorteil dazu gibt es hier im Forum eine Menge Threads.
    Falls du noch Hilfe benötigst Poste doch einfach deinen bisherigen Code da können wir dir dann noch viel besser helfen ;)

    Greetz
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Wie gesagt, wichtig wäre ja zunächst zu erfahren, welche Umgebung gegeben ist. Könnte ja sein, dass er nicht wirklich 'ne Settings Datei bräuchte.
    Dann kann man ja eben fix den Monat herausziehen von 'Heute' und mit Select Case bist' da schnell durch, je nachdem wie der Zyklus eben ist. Kann Quartalsweise sein, könnte aber auch variieren.
    Option Strict On!
    Okay, jetzt wird es nämlich interessant. ;)
    Nur schauen, wenn du nicht selbst weißt, wie du vorgehen sollst. Ansonsten; Date und Select Case. Denk dran, dass du in einer Select Anweisung auch "Von-Bis" gehen kannst.
    Verteilung der Monate "sporadisch"

    VB.NET-Quellcode

    1. Select Case DateAndTime.Month(DateTime.Now)
    2. Case 3, 4, 5
    3. PictureBox1.Image = My.Resources.Fruehling
    4. Case 6, 7, 8, 9
    5. PictureBox1.Image = My.Resources.Sommer
    6. Case 10, 11, 12
    7. PictureBox1.Image = My.Resources.Herbst
    8. Case 1, 2
    9. PictureBox1.Image = My.Resources.Winter
    10. End Select


    Jahreszeiten
    Wenn du es auf den Tag genau haben möchtest, müsste man also etwas mehr machen. Ich beziehe mich nun mal auf die Nördliche Hemisphäre der Astronomische Jahreszeiten:
    Monatesverteilung nach Quelle

    VB.NET-Quellcode

    1. Select Case DateAndTime.Month(DateTime.Now)
    2. Case 3 'März kann Winter und Frühling sein
    3. Select Case Today.Day
    4. Case 1 To 20 'Winter
    5. PictureBox1.Image = My.Resources.Winter
    6. Case 21 To 31 'Frühling
    7. PictureBox1.Image = My.Resources.Fruehling
    8. End Select
    9. Case 6 'Juni kann Frühling und Sommer sein
    10. Select Case Today.Day
    11. Case 1 To 21 'Frühling
    12. PictureBox1.Image = My.Resources.Fruehling
    13. Case 21 To 31 'Sommer
    14. PictureBox1.Image = My.Resources.Sommer
    15. End Select
    16. Case 9 'September kann Sommer und Herbst sein
    17. Select Case Today.Day
    18. Case 1 To 20 'Sommer
    19. PictureBox1.Image = My.Resources.Sommer
    20. Case 21 To 31 'Herbst
    21. PictureBox1.Image = My.Resources.Herbst
    22. End Select
    23. Case 12 'Dezember kann Herbst und Winter sein
    24. Select Case Today.Day
    25. Case 1 To 20 'Herbst
    26. PictureBox1.Image = My.Resources.Herbst
    27. Case 21 To 31 'Winter
    28. PictureBox1.Image = My.Resources.Winter
    29. End Select
    30. Case 4, 5 'Frühling
    31. PictureBox1.Image = My.Resources.Fruehling
    32. Case 7, 8 'Sommer
    33. PictureBox1.Image = My.Resources.Image_1
    34. Case 10, 11 'Herbst
    35. PictureBox1.Image = My.Resources.Image_1
    36. Case 1, 2 'Winter
    37. PictureBox1.Image = My.Resources.Image_1
    38. End Select
    Option Strict On!

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

    Hi,

    dann schau Dir an, wann die Jahreszeiten beginnen (Monat oder Tag wenns gefordert ist) und weise wie bereits @Drahuverar sagte, in einem Select Case entsprechnd das Bild aus der Ressource zu.
    "Hier könnte Ihre Werbung stehen..."
    Select Case DateAndTime.Month(DateTime.Now)
    Case 3 'März kann Winter und Frühling sein
    Select Case Today.Day
    Case 1 To 20 'Winter
    PictureBox1.Image = My.Resources.stoppuhr
    Case 21 To 31 'Frühling
    PictureBox1.Image = My.Resources.basic
    End Select
    Case 6 'Juni kann Frühling und Sommer sein
    Select Case Today.Day
    Case 1 To 21 'Frühling
    PictureBox1.Image = My.Resources.Gewicht
    Case 21 To 31 'Sommer
    PictureBox1.Image = My.Resources.diätwaage_104x104
    End Select
    Case 9 'September kann Sommer und Herbst sein
    Select Case Today.Day
    Case 1 To 20 'Sommer
    PictureBox1.Image = My.Resources.diätwaage_80x80
    Case 21 To 31 'Herbst
    PictureBox1.Image = My.Resources.stoppuhr
    End Select
    Case 12 'Dezember kann Herbst und Winter sein
    Select Case Today.Day
    Case 1 To 20 'Herbst
    PictureBox1.Image = My.Resources.diätwaage_104x104
    Case 21 To 31 'Winter
    PictureBox1.Image = My.Resources.basic
    End Select
    Case 4, 5 'Frühling
    PictureBox1.Image = My.Resources.stoppuhr
    Case 7, 8 'Sommer
    PictureBox1.Image = My.Resources.Gewicht
    Case 10, 11 'Herbst
    PictureBox1.Image = My.Resources.diätwaage_80x80
    Case 1, 2 'Winter
    PictureBox1.Image = My.Resources.diätwaage_104x104
    End Select

    Das werde ich mal versuchen.
    Noch eine Frage. Ich hoffe ich nerve euch nicht damit.
    Wo muss der Code hin?

    Danke
    Manni
    am besten in eine Sub:

    VB.NET-Quellcode

    1. Private Sub CheckYearSeason()
    2. Select Case DateAndTime.Month(DateTime.Now)
    3. Case 3 'März kann Winter und Frühling sein
    4. Select Case Today.Day
    5. Case 1 To 20 'Winter
    6. PictureBox1.Image = My.Resources.Winter
    7. Case 21 To 31 'Frühling
    8. PictureBox1.Image = My.Resources.Fruehling
    9. End Select
    10. Case 6 'Juni kann Frühling und Sommer sein
    11. Select Case Today.Day
    12. Case 1 To 21 'Frühling
    13. PictureBox1.Image = My.Resources.Fruehling
    14. Case 21 To 31 'Sommer
    15. PictureBox1.Image = My.Resources.Sommer
    16. End Select
    17. Case 9 'September kann Sommer und Herbst sein
    18. Select Case Today.Day
    19. Case 1 To 20 'Sommer
    20. PictureBox1.Image = My.Resources.Sommer
    21. Case 21 To 31 'Herbst
    22. PictureBox1.Image = My.Resources.Herbst
    23. End Select
    24. Case 12 'Dezember kann Herbst und Winter sein
    25. Select Case Today.Day
    26. Case 1 To 20 'Herbst
    27. PictureBox1.Image = My.Resources.Herbst
    28. Case 21 To 31 'Winter
    29. PictureBox1.Image = My.Resources.Winter
    30. End Select
    31. Case 4, 5 'Frühling
    32. PictureBox1.Image = My.Resources.Fruehling
    33. Case 7, 8 'Sommer
    34. PictureBox1.Image = My.Resources.Image_1
    35. Case 10, 11 'Herbst
    36. PictureBox1.Image = My.Resources.Image_1
    37. Case 1, 2 'Winter
    38. PictureBox1.Image = My.Resources.Image_1
    39. End Select
    40. end Sub


    die rufts Du dan imm Form_Load Event auf
    "Hier könnte Ihre Werbung stehen..."
    Kein Problem, du hast ja gesagt, dass du Anfänger in .NET bist und wir sind ja alle hier um zu lernen und zu helfen.
    Kleiner Tipp: Mach den Code, den du gepostet zwischen den VB-Tag [-vbnet][/vbnet-] (die "-"-Zeichen müssen weg), dann wird das besser dargestellt im Forum.

    Wenn du eine Anwendung hast, die gestartet wird, kannst du das im Load Event aufrufen. Du kannst diese Anweisung aber auch noch in eine Methode verpacken und anschließend im Load Event die Methode aufrufen:

    VB.NET-Quellcode

    1. Private Sub Monatsbild_auswaehlen()
    2. 'Hier den Code einfügen
    3. End Sub


    VB.NET-Quellcode

    1. Private Sub NameDeinerAnwendung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. Monatsbild_auswaehlen()
    3. End Sub


    Du kannst auch einen Button benutzen und dort die Methode aufrufen.

    Gruß,
    Drahuverar
    Option Strict On!

    manni4545 schrieb:

    es funktioniert bis das heute der Frühling statt Winter angezeigt wird.
    Dann mach Dir einen Test mit einem Button, der interne Rechentage hochzählt. Da solletst Du ganz fix sehen, wo es klemmt.
    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!
    Wie schon erwähnt beziehen sich die Werte auf die Nördliche Hemisphäre der Astronomische Jahreszeiten~ du müsstest also die Tage noch so anpassen, wie du es möchtest. Vielleicht die Meteorologische Jahreszeiten? Siehe post #6. Dann sollte auch der Winter eintreten ;)
    Option Strict On!
    Also so finde ich es uebersichtlicher.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub SetSeasonImage()
    3. Const Spring As Integer = 80
    4. Const Summer As Integer = 172
    5. Const Autumn As Integer = 264
    6. Const Winter As Integer = 355
    7. Dim day As Integer = Now.DayOfYear
    8. If Date.IsLeapYear(Now.Year) AndAlso Now.Month >= 3 Then
    9. day -= 1
    10. End If
    11. Select Case True
    12. Case day >= Winter, day < Spring
    13. 'PictureBox1.Image = My.Resources.Winter
    14. Case day >= Autumn
    15. 'PictureBox1.Image = My.Resources.Autumn
    16. Case day >= Summer
    17. 'PictureBox1.Image = My.Resources.Summer
    18. Case day >= Spring
    19. 'PictureBox1.Image = My.Resources.Spring
    20. End Select
    21. End Sub
    22. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    23. SetSeasonImage()
    24. End Sub
    25. End Class
    And i think to myself... what a wonderfuL World!