GDI Ladebalken problem

  • Ich habe mal versucht einen eigenen Ladebalken zumachen. Mit F9 kann man die prozent angeben wieweit der Balken gefüllt werden soll. wenn ich z.B 5% eingebe dann macht er die linie auserhalb des rechtecks ?( und 50% liegt glaub ich auch nicht genau in der mitte, weis einer was daran falsch ist?

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    HotKeySet("{F9}","plus")
    ;0xFFA8E61D ; grün
    ;0xFFFF7E00 ; orange
    $fenster = GUICreate("test",600,600)
    GUISetBkColor(0x0033CC)
    $handle = WinGetHandle($fenster)
    GUISetState(@SW_SHOW)
    Local $randPen,$balkenPen,$prozent
    _GDIPlus_Startup()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($handle)
    $loeschPen = _GDIPlus_PenCreate(0xFF0033CC,36)
    $balkenPen = _GDIPlus_PenCreate(0xFFA8E61D,36)
    $randPen = _GDIPlus_PenCreate(0xFFFF7E00,4)
    _GDIPlus_GraphicsDrawLine($hGraphics,45,490,560,490,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,560,490,560,530,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,560,530,45,530,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,45,530,45,490,$randPen)
    $linie = 0
    while 1
    wend
    func plus()
    if $linie = "True" Then
    _GDIPlus_GraphicsDrawLine($hGraphics,47,510,558,510,$loeschPen)
    EndIf
    $prozent = InputBox("","prozent?")
    $rechts = $prozent * 5.58
    $linie = _GDIPlus_GraphicsDrawLine($hGraphics,47,510,$rechts,510,$balkenPen)
    MsgBox(0,"",$linie)
    EndFunc

    [/autoit]

    Danke Schonmal :)

    Einmal editiert, zuletzt von zocker5656 (11. März 2010 um 17:33)

  • ach habs gelöst :)
    so siehts richtig aus die rechnung war falsch.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    HotKeySet("{F9}","plus")
    ;0xFFA8E61D ; grün
    ;0xFFFF7E00 ; orange
    $fenster = GUICreate("test",600,600)
    GUISetBkColor(0x0033CC)
    $handle = WinGetHandle($fenster)
    GUISetState(@SW_SHOW)
    Local $randPen,$balkenPen,$prozent
    _GDIPlus_Startup()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($handle)
    $loeschPen = _GDIPlus_PenCreate(0xFF0033CC,36)
    $balkenPen = _GDIPlus_PenCreate(0xFFA8E61D,36)
    $randPen = _GDIPlus_PenCreate(0xFFFF7E00,4)
    _GDIPlus_GraphicsDrawLine($hGraphics,45,490,560,490,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,560,490,560,530,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,560,530,45,530,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,45,530,45,490,$randPen)
    $linie = 0
    while 1
    wend
    func plus()
    if $linie = "True" Then
    _GDIPlus_GraphicsDrawLine($hGraphics,47,510,558,510,$loeschPen)
    EndIf
    $prozent = InputBox("","prozent?")
    $rechts = $prozent * 5.11 + 47
    $linie = _GDIPlus_GraphicsDrawLine($hGraphics,47,510,$rechts,510,$balkenPen)
    EndFunc

    [/autoit]
  • jo habs verbessert

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    HotKeySet("{F9}","plus")
    HotKeySet("{F8}","zeit")
    $fenster = GUICreate("test",600,600)
    GUISetBkColor(0x0033CC)
    $handle = WinGetHandle($fenster)
    GUISetState(@SW_SHOW)

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

    Local $randPen,$balkenPen,$prozent

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

    _GDIPlus_Startup()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($handle)
    $loeschPen = _GDIPlus_PenCreate(0xFF0033CC,36)
    $balkenPen = _GDIPlus_PenCreate(0xFFA8E61D,36)
    $randPen = _GDIPlus_PenCreate(0xFFFF7E00,4)

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

    _GDIPlus_GraphicsDrawLine($hGraphics,45,490,560,490,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,560,490,560,530,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,560,530,45,530,$randPen)
    _GDIPlus_GraphicsDrawLine($hGraphics,45,530,45,490,$randPen)

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

    $linie = 0

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

    while 1

    wend

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

    func plus()
    if $linie = "True" Then
    _GDIPlus_GraphicsDrawLine($hGraphics,47,510,558,510,$loeschPen)
    EndIf
    $prozent = InputBox("","prozent?")
    if $prozent > 100 Then
    plus()
    ElseIf $prozent < 0 Then
    plus()
    EndIf
    $rechts = $prozent * 5.11 + 47
    $linie = _GDIPlus_GraphicsDrawLine($hGraphics,47,510,$rechts,510,$balkenPen)
    EndFunc

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

    Func zeit()
    if $linie = "True" Then
    _GDIPlus_GraphicsDrawLine($hGraphics,47,510,558,510,$loeschPen)
    EndIf
    $zeit = InputBox("","zeit?")
    $rechts = $zeit / 100 * 5.11
    $rechtsaktuell = $zeit / 100 * 5.11
    $maxrechts = $rechts * 100
    $time = $zeit / 100 * 1000
    $vergangen = 0
    Do
    $linie = _GDIPlus_GraphicsDrawLine($hGraphics,47,510,$rechtsaktuell + 47,510,$balkenPen)
    $rechtsaktuell = $rechtsaktuell + $rechts
    sleep($time)
    $vergangen += 1
    GUICtrlSetData($label,$vergangen)
    until $rechtsaktuell = $maxrechts

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

    EndFunc

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

    Auf F8 kann man nun z.B 20 eingeben also 20 sekunden nun müsste er eigentlich nach 20 sekunden die leiste aufgefüllt haben aber sind noch paar fehler drin.