1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Ququknife

Beiträge von Ququknife

  • GDI+ Countdown

    • Ququknife
    • 24. November 2012 um 12:26

    ok das klingt plausibel damit kann ich etwas anfangen :) dann werd ich mich in zukunft daran halten. nur zum verständnis,

    Global Variablen deklariere ich immer am Scriptanfang auserhalb einer schleife,
    Local Variablen deklariert man auch normalerweise am Scriptanfang, man kann sie aber auch in einer schleife für bestimmte Optionen deklarieren

    habe ich das richtig verstanden?

  • GDI+ Countdown

    • Ququknife
    • 24. November 2012 um 09:01

    eukalyptus
    ich bedanke mich bei dir für deine Hilfe, und deine Hinweise, diese werde ich dann in Zukunft berücksichtigen.
    ich habe dein Script direkt getestet, und es kommt mir so vor, als würde der Zoom flüssiger laufen als davor :)

    Vielen Dank dafür.

    Nur eine Frage hätte ich noch Warum sollte man niemals innerhalb einer Schleife eine Variable Global deklarieren, wenn es dennoch zu Funktionieren scheint, diese Frage ist nur zum Verständnis für mich :)

  • GDI+ Countdown

    • Ququknife
    • 24. November 2012 um 00:47

    ah ok danke für die Info, werd ich unverzüglich machen :)

  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 23:39

    mit der For Schleife ist es sehr leicht ja:

    [autoit]

    For $i = 0 To 20
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    _GDIPlus_GraphicsClear($hBuffer, 0xFFA2FF00)
    _GDIPlus_GraphicsDrawString($hBuffer, StringFormat("%02i - %02i:%02i:%02i", $days, $hour, $Mins, $secs), $xAchse, $yAchse, "Arial", $i)
    Sleep(50)
    Next

    [/autoit]

    Ist aber nicht das was ich will, wenn mir jemand helfen kann, ich währe dann sehr sehr dankbar

    Edit: Ich habe es jetzt so geschafft den Countdown zu machen, an sich sieht das schon super aus nur der einzige Fehler ist, während dem Zoomeffekt, Geht der Countdown nicht runter, das heist er bleibt stehen, das soll nicht sein hat jemand dazu Hilfestellung?

    Edit: So Ich habe es geschafft mein Problem nun selber zu lösen :) Habe mir den Code nochmal genau angeschaut und habe den Fehler gefunden :) Ich danke euch trotzdem für eure Hilfe :)

    Habe euch den Code aktualisiert, Funktioniert genau so wie ich es mir vorstelle

    Hier der Code:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Global $iWidth = 400
    Global $iHeight = 200

    [/autoit] [autoit][/autoit] [autoit]

    Global $days, $hour, $hour2, $Mins, $secs

    [/autoit] [autoit][/autoit] [autoit]

    Global $iColor_BG = 0xFF008000
    Global $iColor_TextFill = 0xFFFFAA00
    Global $iColor_TextFill2 = 0xFFFF0000
    Global $iColor_TextFill3 = 0xFF0000FF
    Global $iColor_TextFill4 = 0xFF353535
    Global $iColor_TextBorder = 0xFFA00000

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGui = GUICreate("GDI+", $iWidth, $iHeight)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
    Global $hBmpBuffer = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
    Global $hGfxBuffer = _GDIPlus_ImageGetGraphicsContext($hBmpBuffer)
    _GDIPlus_GraphicsSetSmoothingMode($hGfxBuffer, 2)
    _GDIPlus_GraphicsClear($hGfxBuffer, $iColor_BG)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hPen = _GDIPlus_PenCreate($iColor_TextBorder, 3)
    Global $hBrush = _GDIPlus_BrushCreateSolid($iColor_TextFill)
    Global $day, $hour, $hour2, $Mins, $secs

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_PAINT, "WM_PAINT")
    GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_Update", 1000)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Update()
    Global $fStep = 0

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _GDIPlus_GraphicsClear($hGfxBuffer, 0xFFA2FF00)
    _TicksToTime(_DateDiff('s', _NowCalc(), "2013/01/01 00:00:00") * 1000, $hour, $Mins, $secs)
    ;GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", $hour, $Mins, $secs))
    If $hour >23 Then
    $days = StringFormat("%02i", $hour / 24); volle Tage
    $hour = $hour - ($days*24); volle Tage abziehen
    Else
    $days = 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Global $hPath = _CreatePath(StringFormat("%02i - %02i:%02i:%02i", $days, $hour, $Mins, $secs))

    [/autoit] [autoit][/autoit] [autoit]

    $fStep += 0.025
    _Draw(Abs(Sin($fStep)))
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Draw($fScale)
    _GDIPlus_GraphicsClear($hGfxBuffer, $iColor_BG)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGfxBuffer, "float", -$iWidth / 2, "float", -$iHeight / 2, "int", False)
    DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hGfxBuffer, "float", $fScale, "float", $fScale, "int", True)
    DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGfxBuffer, "float", $iWidth / 2, "float", $iHeight / 2, "int", True)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipDrawPath", "hwnd", $hGfxBuffer, "hwnd", $hPen, "hwnd", $hPath)
    DllCall($ghGDIPDll, "uint", "GdipFillPath", "hwnd", $hGfxBuffer, "hwnd", $hBrush, "hwnd", $hPath)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipResetWorldTransform", "hwnd", $hGfxBuffer)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    EndFunc ;==>_Draw

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CreatePath($sText)
    Local $hFormat = _GDIPlus_StringFormatCreate()
    Local $hFamily = _GDIPlus_FontFamilyCreate("Arial Black")

    [/autoit] [autoit][/autoit] [autoit]

    Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
    Local $tBounds = _GDIPlus_RectFCreate(0, 0, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
    If @error Or Not IsArray($aResult) Then Return SetError(1, 1, False)
    Local $hPath = $aResult[2]

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
    DllCall($ghGDIPDll, "uint", "GdipGetPathWorldBounds", "hwnd", $hPath, "ptr", DllStructGetPtr($tBounds), "hwnd", 0, "hwnd", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, -DllStructGetData($tBounds, "X"), -DllStructGetData($tBounds, "Y"))
    _GDIPlus_MatrixScale($hMatrix, $iWidth / DllStructGetData($tBounds, "Width"), $iHeight / DllStructGetData($tBounds, "Height"), True)
    DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)

    [/autoit] [autoit][/autoit] [autoit]

    Return $hPath
    EndFunc ;==>_CreatePath

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WM_PAINT($hWnd, $uMsgm, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_PAINT

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_ERASEBKGND($hWnd, $uMsgm, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    Return True
    EndFunc ;==>WM_ERASEBKGND

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    DllCall($ghGDIPDll, "uint", "GdipDeletePath", "hwnd", $hPath)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGfxBuffer)
    _GDIPlus_BitmapDispose($hBmpBuffer)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 23:20

    meinst du mithilfe einer For Schleife?

    das ist ja leider nicht ganz das was ich will ich will den Countdown genau in dem Style zoomen wie im Code den ich gepostet hatte

  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 23:13

    welchen Parameter davon meinst du? ich komme wirklich nicht weiter

  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 22:59

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

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Global $day, $hour, $hour2, $Mins, $secs

    [/autoit] [autoit][/autoit] [autoit]

    $xAchse = 130
    $yAchse = 70

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Happy New Year", 400, 200, 500, 300)
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 200, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsFillRect($hBuffer, 0, 0, 400, 200, _GDIPlus_BrushCreateSolid(0xFFA2FF00))
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ;_Update()
    AdlibRegister("_Update", 1000)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Update()
    _GDIPlus_GraphicsClear($hBuffer, 0xFFA2FF00)
    _TicksToTime(_DateDiff('s', _NowCalc(), "2013/01/01 00:00:00") * 1000, $hour, $Mins, $secs)
    ;GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", $hour, $Mins, $secs))
    If $hour >23 Then
    $days = StringFormat("%02i", $hour / 24); volle Tage
    $hour = $hour - ($days*24); volle Tage abziehen
    Else
    $days = 0
    EndIf
    _GDIPlus_GraphicsDrawString($hBuffer, StringFormat("%02i - %02i:%02i:%02i", $days, $hour, $Mins, $secs), $xAchse, $yAchse, "Arial", 20)
    EndFunc ;==>_Update

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    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:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Global $iWidth = 400
    Global $iHeight = 200

    [/autoit] [autoit][/autoit] [autoit]

    Global $iColor_BG = 0xFF008000
    Global $iColor_TextFill = 0xFFFFAA00
    Global $iColor_TextFill2 = 0xFFFF0000
    Global $iColor_TextFill3 = 0xFF0000FF
    Global $iColor_TextFill4 = 0xFF353535
    Global $iColor_TextBorder = 0xFFA00000

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGui = GUICreate("GDI+", $iWidth, $iHeight)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
    Global $hBmpBuffer = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
    Global $hGfxBuffer = _GDIPlus_ImageGetGraphicsContext($hBmpBuffer)
    _GDIPlus_GraphicsSetSmoothingMode($hGfxBuffer, 2)
    _GDIPlus_GraphicsClear($hGfxBuffer, $iColor_BG)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hPen = _GDIPlus_PenCreate($iColor_TextBorder, 3)
    Global $hBrush = _GDIPlus_BrushCreateSolid($iColor_TextFill)

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_PAINT, "WM_PAINT")
    GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $hPath = _CreatePath("Countdown")
    Global $fStep = 0
    While 1
    $fStep += 0.025
    _Draw(Abs(Sin($fStep)))
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Draw($fScale)
    _GDIPlus_GraphicsClear($hGfxBuffer, $iColor_BG)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGfxBuffer, "float", -$iWidth / 2, "float", -$iHeight / 2, "int", False)
    DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hGfxBuffer, "float", $fScale, "float", $fScale, "int", True)
    DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGfxBuffer, "float", $iWidth / 2, "float", $iHeight / 2, "int", True)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipDrawPath", "hwnd", $hGfxBuffer, "hwnd", $hPen, "hwnd", $hPath)
    DllCall($ghGDIPDll, "uint", "GdipFillPath", "hwnd", $hGfxBuffer, "hwnd", $hBrush, "hwnd", $hPath)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipResetWorldTransform", "hwnd", $hGfxBuffer)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    EndFunc ;==>_Draw

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CreatePath($sText)
    Local $hFormat = _GDIPlus_StringFormatCreate()
    Local $hFamily = _GDIPlus_FontFamilyCreate("Arial Black")

    [/autoit] [autoit][/autoit] [autoit]

    Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
    Local $tBounds = _GDIPlus_RectFCreate(0, 0, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
    If @error Or Not IsArray($aResult) Then Return SetError(1, 1, False)
    Local $hPath = $aResult[2]

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
    DllCall($ghGDIPDll, "uint", "GdipGetPathWorldBounds", "hwnd", $hPath, "ptr", DllStructGetPtr($tBounds), "hwnd", 0, "hwnd", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, -DllStructGetData($tBounds, "X"), -DllStructGetData($tBounds, "Y"))
    _GDIPlus_MatrixScale($hMatrix, $iWidth / DllStructGetData($tBounds, "Width"), $iHeight / DllStructGetData($tBounds, "Height"), True)
    DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)

    [/autoit] [autoit][/autoit] [autoit]

    Return $hPath
    EndFunc ;==>_CreatePath

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WM_PAINT($hWnd, $uMsgm, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_PAINT

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_ERASEBKGND($hWnd, $uMsgm, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    Return True
    EndFunc ;==>WM_ERASEBKGND

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    DllCall($ghGDIPDll, "uint", "GdipDeletePath", "hwnd", $hPath)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGfxBuffer)
    _GDIPlus_BitmapDispose($hBmpBuffer)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

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

  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 21:10

    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!

  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 17:29

    und wie wende ich jetzt das selbst deklarierte StringFormat auf meinen code an? das will nicht funktionieren :/

  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 09:47

    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

  • GDI+ Countdown

    • Ququknife
    • 23. November 2012 um 00:21

    habe das jetzt so geschrieben:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Variablen

    [/autoit] [autoit][/autoit] [autoit]

    Global $Zeit = 0, $Timer

    [/autoit] [autoit][/autoit] [autoit]

    $DauerStd = 0 ; Dauer in Stunden
    $DauerMin = 2 ; Dauer in Minuten
    $DauerSek = 0; Dauer in Sekunden
    $DauerGesammt = (60*60*$DauerStd)+(60*$DauerMin)+$DauerSek ; Die Gesamtdauer
    $Zeit = $DauerGesammt
    $Timer = TimerInit()
    AdlibRegister("Countdown", 1000)

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("GDI+ Countdown", 400, 200)
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 200, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsFillRect($hBuffer, 0,0, 400, 200, _GDIPlus_BrushCreateSolid(0xFFA2FF00))

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Func Countdown()
    Local $x = $Zeit - TimerDiff($Timer)/1000
    _GDIPlus_GraphicsClear($hBuffer, 0xFFA2FF00)
    _GDIPlus_GraphicsDrawString($hBuffer, _Sek2StdMinSek($x), (400 / 2) - 6, (200 / 2) - 8)
    If ($x <= 0) Then AdlibUnRegister("Countdown")
    If ($x <= 0) Then
    _GDIPlus_GraphicsClear($hBuffer, 0xFFA2FF00)
    _GDIPlus_GraphicsDrawString($hBuffer, "Happy New YEAR!!", (400 / 2) -6, (200 / 2) -8)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;==================== Countdown Script ===================================================

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit]


    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!

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Global $hour, $Mins, $secs

    [/autoit] [autoit][/autoit] [autoit]

    $xAchse = 130
    $yAchse = 70

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Happy New Year", 400, 200, 500, 300)
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 200, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsFillRect($hBuffer, 0, 0, 400, 200, _GDIPlus_BrushCreateSolid(0xFFA2FF00))
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ;_Update()
    AdlibRegister("_Update", 1000)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Update()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsClear($hBuffer, 0xFFA2FF00)
    _TicksToTime(_DateDiff('s', _NowCalc(), "2013/01/01 00:00:00") * 1000, $hour, $Mins, $secs)
    ;GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", $hour, $Mins, $secs))
    _GDIPlus_GraphicsDrawString($hBuffer, StringFormat("%02i:%02i:%02i", $hour, $Mins, $secs), $xAchse, $yAchse, "Arial", 20)
    EndFunc ;==>_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    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:

    [autoit][/autoit][autoit][/autoit][autoit]

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

    [/autoit][autoit][/autoit][autoit][/autoit]

    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?

  • GDI+ Countdown

    • Ququknife
    • 22. November 2012 um 23:27

    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??

    [autoit]

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

    [/autoit][autoit][/autoit][autoit]

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

    [/autoit][autoit][/autoit][autoit]

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

    [/autoit]
  • GDI+ Countdown

    • Ququknife
    • 22. November 2012 um 23:09

    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

  • GDI+ Countdown

    • Ququknife
    • 22. November 2012 um 22:58

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

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("GDI+ Countdown", 400, 200)
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 200, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsFillRect($hBuffer, 0,0, 400, 200, _GDIPlus_BrushCreateSolid(0xFFA2FF00))

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While True
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    For $i = 5 To 0 Step - 1
    _GDIPlus_GraphicsClear($hBuffer, 0xFFA2FF00)
    _GDIPlus_GraphicsDrawString($hBuffer, $i, (400 / 2) - 6, (200 / 2) - 8)
    Sleep(1000)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • GDI+ Countdown

    • Ququknife
    • 22. November 2012 um 22:30

    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?

  • GDI+ Countdown

    • Ququknife
    • 22. November 2012 um 22:05

    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

  • Text automatisch vergrößern

    • Ququknife
    • 22. November 2012 um 00:15

    Ihr wart beide sehr Hilfreich ich dank euch beiden jetzt Funktioniert das auch wie ich es mir vorstelle..

    Ich hätte zwar nochmal eine Frage zu GDI+ aber das versuche ich jetzt ersteinmal selber

  • Text automatisch vergrößern

    • Ququknife
    • 21. November 2012 um 23:37

    Das heist mein Code müsste dann so aussehen?

    0x99556500

  • Text automatisch vergrößern

    • Ququknife
    • 21. November 2012 um 23:15

    _GDIPlus_GraphicsClear dieser Funktion gebe ich diesen Wert!

  • Text automatisch vergrößern

    • Ququknife
    • 21. November 2012 um 23:08

    aber wenn ich die 2 Nullen weglasse, dann stimmt die Farbe schon nicht mehr dann mach ich doch noch irgendwas falsch

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™