Bild anzeigen mit Timer?

  • VB.NET

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

    Bild anzeigen mit Timer?

    Hi, mach ein kleines Spiel und würd gern eine "Animation" einbauen.
    Das soll passieren: Wenn man auf einen Button klickt wird das erste Bild angezeigt,
    1 sekunde später das zweite, wieder eine sekunde später das dritte. Und dann das ganze von vorne, nach 9 sekunden bleibt es stehen.
    Ich hab jedes einzelne Bild in eine PictureBox und die übereinandergelegt.
    Ich hab mir schon einige youtube-tutorials angeguckt, bin aber nicht wirklich schlau draus geworden.
    Hier mein Code bis jetzt:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim timercount As Single = 9
    3. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    4. Timer1.Interval = 1000
    5. If timercount = 1 Or 4 Or 7 Then pb_1.Visible = True And pb_2.Visible = False And pb_3.Visible = False
    6. If timercount = 2 Or 5 Or 8 Then pb_1.Visible = False And pb_2.Visible = True And pb_3.Visible = False
    7. If timercount = 3 Or 6 Or 9 Then pb_1.Visible = False And pb_2.Visible = False And pb_3.Visible = True
    8. End Sub
    9. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_start.Click
    10. Timer1.Start()
    11. Timer1.Enabled = True
    12. End Sub
    13. End Class


    cmd_start = Button1
    pb_1=Picturebox1 usw

    Kann mir jemand sagen, was ich falsch mache, wie ich das machen muss, evt. sogar den richtigen Code posten? Schön wärs erklärt, denn verstehen will ich das ganze ja auch^^
    Ich hab jedes einzelne Bild in eine PictureBox und die übereinandergelegt.
    Wozu denn das?

    VB.NET-Quellcode

    1. picturebox1.image = image.fromfile("dateiname")

    Und es ist ein anderes Bild in der Picturebox.
    Ich hab mir schon einige youtube-tutorials angeguckt, bin aber nicht wirklich schlau draus geworden.
    Lies dir am besten ein Openbook durch, statt den Youtube Tutorials.

    Außerdem würde ich statt den ganzen If-Abfragen Select Case nehmen.

    Gruß, Gugi :thumbup:
    Das hatte ich mir fast schon gedacht.
    Da stimmt wahrscheinlich der Event handler im code nicht mit deinem Timer überein.

    Wenn ich einen neuen Timer einfüge, dann wird er vom System Timer1 benannt.
    Im Code steht dann das.

    Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick


    Timer Intervall würde ich übrigens in das FormLoad Ereignis packen


    MSDN schreibt:
    Das Aufrufen der Start-Methode und das Festlegen von Enabled auf true ist vom Ergebnis her identisch. Entsprechend ist auch das Aufrufen der Stop-Methode und das Festlegen von Enabled auf false vom Ergebnis her identisch.
    Entweder oder, beides zusammen ist nicht nötig.


    Als nächstes setzt du einen Haltepunkt in den Code vom TimerTick und startest das Programm.
    Dann klickst du den Button und das Programm sollte im Timer hängen bleiben.
    Dann weißt du dass dein Timer richtig los läuft.
    If timercount = 1 Or 4 Or 7 Then

    1 Or 4 = 5
    5 Or 7 = 7
    ->
    If timercount = 7 then...
    ich glaube nicht, dass dies dein Ziel war...
    was hälst du von dem hier:

    VB.NET-Quellcode

    1. If timercount=1 Or timercount=4 or timercount=7 Then

    ?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    ich hab dir doch einen berichtigten Code für diesen Teil gegeben, setz dies nur noch für die anderen Stellen um, wenn es dann nicht geht, Poste deinen Code und dann gucken wir hier alle nochmal drüber ;)

    außerdem ist mir nochmal was aufgefallen:

    pb_1.Visible = True And pb_2.Visible = False And pb_3.Visible = False

    pb1.Visible = (Wahr LogischesUnd pb2.Visible ist Unwahr LogischesUnd pb3.Visible=Unwahr)
    [/quote]
    somit wird pb1.Visible True, wenn pb2 und pb3 nicht sichtbar sind...
    ich denke die gesamte Code zeile sollte eher so lauten:

    VB.NET-Quellcode

    1. If timercount=1 Or timercount=4 or timercount=7 Then pb_1.Visible = True : pb_2.Visible = False : pb_3.Visible = False
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    eigentlich wissen wir ja gar nicht wie du dein Problem lösen willst.
    Aber alles was geschrieben wurde war hilfreich, damit du etwas lernen kannst.
    Hast du dich schon mit Debuggen beschäftigt?
    Wie man Variablen ausliest, während das Programm angehalten wurde etc?


    Noch etwas:
    Schreibe alles was nach Then kommt in eine neue Zeile und beende
    die If Vergleiche dann mit End If
    Da schaffst du dann besseren Überblick.

    Edit:na gut, bei deinem Fall geht es auch einigermaßen, weil die verschiedenen Werte dann untereinander zu stehen kommen.

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

    Herzlichen Dank schonmal, es hat sich auf jeden Fall schonmal was getan, denn nach dem drücken auf cmd_start zeigt es pb_3 (die dritte picturebox an) davor sollten aber EIGENTLICH noch pb_1 und pb_2 jeweil 1 sekunde angezeigt werden...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim timercount As Single = 9
    3. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    4. Timer1.Interval = 1000
    5. If timercount = 1 Or timercount = 4 Or timercount = 7 Then pb_1.Visible = True : pb_2.Visible = False : pb_3.Visible = False
    6. If timercount = 2 Or timercount = 5 Or timercount = 8 Then pb_1.Visible = False : pb_2.Visible = True : pb_3.Visible = False
    7. If timercount = 3 Or timercount = 6 Or timercount = 9 Then pb_1.Visible = False : pb_2.Visible = False : pb_3.Visible = True
    8. End Sub
    9. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_start.Click
    10. Timer1.Start()
    11. End Sub
    12. End Class



    Edit: Ich habe keine Ahnung, wie ich das Problem lösen will, da ich überhaupt noch nie etwas mit einem timer gemacht habe. Den Code hab ich mir aus youtube-tutorials zusammengebastelt. Und ich hab keine Ahnung was debuggen ist.