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

    Frühere Werke: PC-Nutzungslaufzeit

    Einmal editiert, zuletzt von Ququknife (24. November 2012 um 00:26) aus folgendem Grund: Präfixänderung

  • Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

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

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

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

    Global $i_WIDTH = 400, $i_HEIGHT = 300
    Global $h_GUI, $h_Graphic

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

    $h_GUI = GUICreate('', $i_WIDTH, $i_HEIGHT)
    $h_Graphic = _GDIPlus_GraphicsCreateFromHWND($h_GUI)
    GUISetOnEvent(-3, '_Exit', $h_GUI)
    GUISetState(@SW_SHOW, $h_GUI)

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

    While True
    For $i = 5 To 0 Step - 1
    _GDIPlus_GraphicsClear($h_Graphic, 0xFFFFFFFF)
    _GDIPlus_GraphicsDrawString($h_Graphic, $i, ($i_WIDTH / 2) - 6, ($i_HEIGHT / 2) - 8)
    Sleep(1000)
    Next
    WEnd

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($h_Graphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]

    So...?

  • 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]
  • Wie wäre es so? :rolleyes:

    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
    For $i = 5 To 0 Step - 1
    _GDIPlus_GraphicsClear($hBuffer, 0xFFA2FF00)
    _GDIPlus_GraphicsDrawString($hBuffer, $i, (400 / 2) - 6, (200 / 2) - 8)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    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]


    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

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

    [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]
  • Mal ein Beispiel:

    Spoiler anzeigen
    [autoit]


    $iSek = 10
    $iMin = 10

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

    While $iSek > 0 Or $iMin > 0
    $iSek -= 1
    If $iSek < 0 Then
    $iSek = 59
    $iMin = $iMin - 1
    EndIf
    ConsoleWrite($iMin & ":" & $iSek & @CRLF)
    Sleep(1000)
    WEnd

    [/autoit]

    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

    Einmal editiert, zuletzt von stayawayknight (22. November 2012 um 23:54)

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

  • 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

  • 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!

  • 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

  • Hi,

    komm, mal ein bisschen Eigeninitiative (und deine Signatur beherzigen)... ;)
    Sieh dir doch mal die Parameter von

    [autoit]

    _GDIPlus_GraphicsDrawString

    [/autoit]

    an :)

    Damit lässt sich ein Zoom bewerkstelligen...


    Gruß stay

    Einmal editiert, zuletzt von stayawayknight (23. November 2012 um 23:10)