GDIPlus Screensaver

  • Ich habe mal als kleine GDIPlus-Übung einen Screensaver geschrieben, über Rückmeldungen würde ich mich freuen.

    GDIPlus Screensaver
    [autoit]


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;scripted by xp_fan from autoit.de;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;Thanks to UEZ autoit.de;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    _GDIPlus_Startup()
    Global $hGUI, $hWnd, $hGraphic
    Global $iX = @DesktopWidth, $iY = @DesktopHeight, $rOO = 117, $r0 = 170, $r1 = 190, $r2 = 380, $r3 = 420, $i = 100
    Global $Pi = 4 * ATan(1)
    Global $hWnd = GUICreate("GDI+", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    ;_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)
    Global $hPen = _GDIPlus_PenCreate(0xFFFF0000)
    Global $hPen2 = _GDIPlus_PenCreate(0xFFFF0000)
    Global $hPen3 = _GDIPlus_PenCreate(0xFFFF0000)
    Global $hPen4 = _GDIPlus_PenCreate(0xFFFF0000)
    Global $hPen5 = _GDIPlus_PenCreate(0xFF0000FF)
    Global $hPenBlack = _GDIPlus_PenCreate(0xFF000000)
    Global $Colors[8] = [0xFFFF0000, 0xFF0000FF, 0xFF00FF00, 0xFF8B00FF, 0xFFFFA100, 0xFFFFFF00, 0xFFFFFFFF, 0xFF00FFFF]

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

    HotKeySet("{ESC}", "Ende")
    GUIRegisterMsg($WM_LBUTTONDOWN, "Ende")
    _Main()

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

    Func _Main()
    GUISetBkColor(0x000000)
    GUISetCursor(16)
    GUISetState()
    While True
    _GDIPlus_PenSetColor($hPen, $Colors[Random(0, 7, 1)])
    _GDIPlus_PenSetColor($hPen2, $Colors[Random(0, 7, 1)])
    _GDIPlus_PenSetColor($hPen3, $Colors[Random(0, 7, 1)])
    _GDIPlus_PenSetColor($hPen5, $Colors[Random(0, 7, 1)])
    For $i = 360 To 0 Step -0.5
    ;Erster Kreis von innen
    $a = $i * - 1
    $11x1 = $rOO * Cos(($a / 2) * ($Pi / 180)) + $iX / 2
    $11y1 = $rOO * Sin(($a / 2) * ($Pi / 180)) + $iY / 2
    $11x2 = $rOO * Cos(($a / 2 + 180) * ($Pi / 180)) + $iX / 2
    $11y2 = $rOO * Sin(($a / 2 + 180) * ($Pi / 180)) + $iY / 2

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

    ;Zweiter Kreis von innen
    $22x1 = $r1 * Cos(($i) * ($Pi / 180)) + $iX / 2
    $22y1 = $r1 * Sin(($i) * ($Pi / 180)) + $iY / 2
    $22x2 = $r1 * Cos(($i + 51) * ($Pi / 180)) + $iX / 2
    $22y2 = $r1 * Sin(($i + 51) * ($Pi / 180)) + $iY / 2
    ;Dritter Kreis von innen
    $b = $i
    $33x1 = $r2 * Cos(($b) * ($Pi / 180)) + $iX / 2
    $33y1 = $r2 * Sin(($b) * ($Pi / 180)) + $iY / 2
    $33x2 = $r2 * Cos(($b + 120) * ($Pi / 180)) + $iX / 2
    $33y2 = $r2 * Sin(($b + 120) * ($Pi / 180)) + $iY / 2

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

    $Line1 = _GDIPlus_GraphicsDrawLine($hGraphic, $11x1, $11y1, $11x2, $11y2, $hPen)
    $Line2 = _GDIPlus_GraphicsDrawLine($hGraphic, $22x1, $22y1, $22x2, $22y2, $hPen2)
    $Line3 = _GDIPlus_GraphicsDrawLine($hGraphic, $33x1, $33y1, $33x2, $33y2, $hPen3)

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

    $c = $i * - 1
    $1x1 = $r0 * Cos(($c) * ($Pi / 180)) + $iX / 2
    $1y1 = $r0 * Sin(($c) * ($Pi / 180)) + $iY / 2
    $1x2 = $r0 * Cos(($c + 90) * ($Pi / 180)) + $iX / 2
    $1y2 = $r0 * Sin(($c + 90) * ($Pi / 180)) + $iY / 2
    $2x1 = $r0 * Cos(($c) * ($Pi / 180)) + $iX / 2
    $2y1 = $r0 * Sin(($c) * ($Pi / 180)) + $iY / 2
    $2x2 = $r0 * Cos(($c - 90) * ($Pi / 180)) + $iX / 2
    $2y2 = $r0 * Sin(($c - 90) * ($Pi / 180)) + $iY / 2
    $3x1 = $r0 * Cos(($c + 180) * ($Pi / 180)) + $iX / 2
    $3y1 = $r0 * Sin(($c + 180) * ($Pi / 180)) + $iY / 2
    $3x2 = $r0 * Cos(($c + 90) * ($Pi / 180)) + $iX / 2
    $3y2 = $r0 * Sin(($c + 90) * ($Pi / 180)) + $iY / 2
    $4x1 = $r0 * Cos(($c + 180) * ($Pi / 180)) + $iX / 2
    $4y1 = $r0 * Sin(($c + 180) * ($Pi / 180)) + $iY / 2
    $4x2 = $r0 * Cos(($c - 90) * ($Pi / 180)) + $iX / 2
    $4y2 = $r0 * Sin(($c - 90) * ($Pi / 180)) + $iY / 2

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

    $c1 = $c - 5.5
    $1x1b = $r0 * Cos(($c1) * ($Pi / 180)) + $iX / 2
    $1y1b = $r0 * Sin(($c1) * ($Pi / 180)) + $iY / 2
    $1x2b = $r0 * Cos(($c1 + 90) * ($Pi / 180)) + $iX / 2
    $1y2b = $r0 * Sin(($c1 + 90) * ($Pi / 180)) + $iY / 2
    $2x1b = $r0 * Cos(($c1) * ($Pi / 180)) + $iX / 2
    $2y1b = $r0 * Sin(($c1) * ($Pi / 180)) + $iY / 2
    $2x2b = $r0 * Cos(($c1 - 90) * ($Pi / 180)) + $iX / 2
    $2y2b = $r0 * Sin(($c1 - 90) * ($Pi / 180)) + $iY / 2
    $3x1b = $r0 * Cos(($c1 + 180) * ($Pi / 180)) + $iX / 2
    $3y1b = $r0 * Sin(($c1 + 180) * ($Pi / 180)) + $iY / 2
    $3x2b = $r0 * Cos(($c1 + 90) * ($Pi / 180)) + $iX / 2
    $3y2b = $r0 * Sin(($c1 + 90) * ($Pi / 180)) + $iY / 2
    $4x1b = $r0 * Cos(($c1 + 180) * ($Pi / 180)) + $iX / 2
    $4y1b = $r0 * Sin(($c1 + 180) * ($Pi / 180)) + $iY / 2
    $4x2b = $r0 * Cos(($c1 - 90) * ($Pi / 180)) + $iX / 2
    $4y2b = $r0 * Sin(($c1 - 90) * ($Pi / 180)) + $iY / 2

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

    ;Aktives Rechteck
    $Line1 = _GDIPlus_GraphicsDrawLine($hGraphic, $1x1, $1y1, $1x2, $1y2, $hPen5)
    $Line2 = _GDIPlus_GraphicsDrawLine($hGraphic, $2x1, $2y1, $2x2, $2y2, $hPen5)
    $Line3 = _GDIPlus_GraphicsDrawLine($hGraphic, $3x1, $3y1, $3x2, $3y2, $hPen5)
    $Line4 = _GDIPlus_GraphicsDrawLine($hGraphic, $4x1, $4y1, $4x2, $4y2, $hPen5)
    Sleep(3)
    ;Elfte Linie überzeichnen
    _GDIPlus_GraphicsDrawLine($hGraphic, $1x1b, $1y1b, $1x2b, $1y2b, $hPenBlack)
    _GDIPlus_GraphicsDrawLine($hGraphic, $2x1b, $2y1b, $2x2b, $2y2b, $hPenBlack)
    _GDIPlus_GraphicsDrawLine($hGraphic, $3x1b, $3y1b, $3x2b, $3y2b, $hPenBlack)
    _GDIPlus_GraphicsDrawLine($hGraphic, $4x1b, $4y1b, $4x2b, $4y2b, $hPenBlack)

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

    Sleep(7)
    Next
    Sleep(3000)
    WEnd
    EndFunc ;==>_Main

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

    Func Ende()
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>Ende

    [/autoit]

    autoit.de/wcf/attachment/7558/