GDI+ Countdown

  • Hey leute,


    ich weis ich habe schon einige Dinge gefragt weil ich nicht mehr weiter wusste, aber dafür ist doch dieses Forum da um Fragen zu klären, ich beise mir gerade an einem Countdown in GDI+ die Zähne aus, hätte da jemand von euch einen Lösungsvorschlag? ich komme nicht mehr weiter..


    Lg
    Ququknife

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

    Einmal editiert, zuletzt von Ququknife () aus folgendem Grund: Präfixänderung

  • na ich dachte, dass ich das mit einer For schleife steuern kann, aber das will nicht funktionieren, wenn ich mit der For ein _GDIPlus_GraphicsDrawString steuern will, mit was geht das am besten?

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

  • So...?

  • Ich habs jetzt so aber Funktioniert nicht ganz, Wird erst die Null bei ende des Countdowns angezeigt wo ist der Fehler?


    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

  • Wie wäre es so? :rolleyes:


    Du musst nach jedem Zeichenvorgang der auf der GUI angezeigt werden soll, aber nur im Buffer steht, diesen auf die Grafik der GUI zeichnen. Dein GraphicsDrawImage war an der völlig falschen Position. Es muss hinter die Zeichenvorgänge und in die Schleife.

  • ok ja das klappt jetzt noch eine kleine Frage und zwar soll meinn Countdown so aussehen 00:00:00:00


    Die ersten 2 Nullen sollen die Tage sein: die Nächsten 2 Nullen die Stunden: und die letzten 4 Nullen erklären sich von selbst


    wie bekomme ich das ganze dann so hin, dass das richtig runterzählt sagen wir 01:22:30:40 das das runterzählt dass alles nacheinander 00 wird

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

  • Du wirst dir den benötigten String (den, der gezeichnet werden soll) dann einzeln zusammenbasteln müssen; ich würde für jede Zeiteinheit eine Variable anlegen.
    Wenn z.B. die Sekundeneinheit < 0 ist, startet diese wieder bei 60, dafür wird die Minute dekrementiert. Und das eben für alle "Zeiteinheiten".
    Das Ganze ist also durch ein paar If-Verzweigungen zu lösen.


    Gruß stay

  • Du meinst wohl so!


    das habe ich noch von einem früheren Script von mir aber wie nehme ich das dann für den _GDIPlus_GraphicsDrawString??


    Func _Sek2StdMinSek($value)
    $format1 = "%02d:%02d:%02d"
    $format2 = "%02d:%02d"
    $format3 = "%02d Std. %02d Min. %02d Sek."
    $format4 = "%02d Std. %02d Min."


    $std = Floor($value / (60*60))
    $value = $value - ((60*60) * $std)
    $min = Floor($value / (60))
    $sek = $value - ((60) * $min)


    Return StringFormat($format3,$std,$min,$sek)
    EndFunc

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

  • Mal ein Beispiel:


    Und das eben auch für Tage, Stunden etc.
    Den String setzt du dann eben aus diesen mit '&' verknüpften Elementen zusammen.
    Über StringFormat kannst du dann auch jeweils eine vorangehende 0 bewerkstelligen.


    Gruß stay

  • habe das jetzt so geschrieben:


    Verbesserungsvorschläge sind erwünscht!!


    Und nochetwas der Countdown soll genau auf den 01.01.2013 um 00:00:00 Uhr Runterzählen wie stelle ich das richtig ein?


    Edit: Bin jetzt lange an meinem Problem gesessen, und habe es nun so gelöst!


    Jetzt habe ich nur noch ein Anliegen, und zwar würde ich gerne noch die Tage Dazu anzeigen wollen also so:


    DD : HH : MM : SS


    Ich habe es damit Probiert:


    If $hour > 23 Then
    $day = $hour / 24
    Else
    $day = "00"
    EndIf



    Dann natürlich habe ich noch dementsprechend $day ins StringFormat eingefügt und um noch einen Platzhalter erweitert "%02i"


    Dann zeigt es mir die Tage an wie ich die dastehen haben will, nur weden immer noch die gesamten stunden angezeigt, hat da jemand eine richtige Lösung für mich?

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

    3 Mal editiert, zuletzt von Ququknife ()

  • den _TimerDiffExt dann statt _TicksToTime schreiben oder statt _DateDiff?


    Und $aReaturn[2] -[5] ist dann die Formatierung für Tage : Stunden : Minuten : Sekunden??


    und wie ich das in deinem Script rauslesen kann, werden dann die Tage hinter den Sekunden erst angezeigt?


    Kann man bestimmt noch umändern, dass sie noch vor den Stunden angezeigt werden oder?


    Edit: Habe mich in meiner Müdigkeit verschaut, ich glaub die Tage werden doch davor angezeigt sorry berichtige mich falls mein ersteres richtig war :D

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

    Einmal editiert, zuletzt von Ququknife ()

  • Naja ich habe nicht so die erfahrung mit einem eigenen StringFormat zusammenzubasteln, habe eben versucht den Code von BugFix soweit zu stutzen, dass nicht mehr die Zeit ermittelt wird, habe da wohl einen Fehler gemacht. Den Code selber wie ich ihn hatte kann ich hier nicht mehr Posten, da ich ihn sofort verworfen hatte!

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup:

  • Habe es jetzt mit Hilfe von Torni so gelöst:



    Jetzt habe nocheine Frage in einem früheren Thread fragte ich bereits nach einem Zoomeffekt in GDI+ und bekam ein Super Beispiel dazu, dieses hier:


    Jetzt möchte ich nurnoch, dass der Countdown mit diesem Zoomeffekt abläuft, habe es selbst versucht es einzubinden doch ich bin gescheitert

    Es ist nicht alles so wie es scheint, gebt der Sache eine Chance und urteilt dann.... :thumbsup: