Mein allererstes GDI+ Script

  • Hallo, Es ist soweit, cih stelle mein allererstes GDI+ Script vor 8o Also nciht wundern, wenn das Script völlig durcheinander ist...
    Aber irgendwie gibts da noch n kleines Problem vonwegen der richtigen Zeitanzeige... :)
    mit bestem Danke an name22 für seine Hilfe und seine eisernen nerven mit mir :thumbup:
    p.s. es sollte iene analoge uhr sein

    Script
    [autoit]

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

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

    Global Const $Pi_Div_180 = ACos(-1) / 180
    Local $x, $y

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

    $gui = GUICreate("Uhr",200,200)
    GUISetState(@SW_SHOW) ;Beim zeichnen das Gui vorher sichtbar machen

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($gui)

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

    $brush = _GDIPlus_BrushCreateSolid(0xFF6E6E6E)
    _GDIPlus_GraphicsDrawArc($hGraphic,95,95,10,10,180,360)
    _GDIPlus_GraphicsFillEllipse($hGraphic,95,95,10,10)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)

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

    $stdpen = _GDIPlus_PenCreate(0xFF000000,6,2)
    $minpen = _GDIPlus_PenCreate(0xFF000000,3,2)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($hGraphic) ;Gans wichtig alle Daten wieder aus dem ram schmeißen
    _GDIPlus_Shutdown()
    Exit
    EndSwitch

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

    ;~ givekoord(@SEC * 6,70)
    ;~ $seczeiger = _GDIPlus_GraphicsDrawLine($hGraphic,100,100,$X,$Y)
    ;~ givekoord(@MIN * 6,60)
    ;~ $seczeiger = _GDIPlus_GraphicsDrawLine($hGraphic,100,100,$X,$Y,$minpen)
    ;~ givekoord(@HOUR * 15,50)
    ;~ $seczeiger = _GDIPlus_GraphicsDrawLine($hGraphic,100,100,$X,$Y,$stdpen)

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

    Sleep(100)
    _GDIPlus_GraphicsClear($hGraphic,0xFFF0F0F0)
    _GDIPlus_GraphicsDrawArc($hGraphic,95,95,10,10,180,360)
    _GDIPlus_GraphicsFillEllipse($hGraphic,95,95,10,10)

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

    givekoord(@SEC * 6,70)
    $seczeiger = _GDIPlus_GraphicsDrawLine($hGraphic,100,100,$X,$Y)
    givekoord(@MIN * 6,60)
    $seczeiger = _GDIPlus_GraphicsDrawLine($hGraphic,100,100,$X,$Y,$minpen)
    givekoord(@HOUR * 15,50)
    $seczeiger = _GDIPlus_GraphicsDrawLine($hGraphic,100,100,$X,$Y,$stdpen)

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

    WEnd

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

    Func givekoord($grad,$radius)
    $X = 200 / 2 + Cos(($grad - 90) * $Pi_Div_180) * $radius ;<-- 1.Formel um die X-Koordinate zu bestimmen
    $Y = 200 / 2 + Sin(($grad - 90) * $Pi_Div_180) * $radius ;<-- 2.Formel um die Y-Koordinate zu bestimmen
    EndFunc

    [/autoit]
  • Für dein erstes Script ist das doch echt gut gelungen. ^^
    Schau dir doch mal das Beispiel für eine analoge Uhr im AutoIt Ordner unter Examples oder so an. Das ist auch mit GDI+ gemacht.
    Jetzt fehlen vielleicht noch Zahlen und Minutenstriche. :P

  • Und eine Hintergrund. ;)

    Ich kann mich name 22 nur anschliessen.
    Für das erste mal Gdi+ ist das ganz gut.

    mfg Ubuntu