Ich habe mal als kleine GDIPlus-Übung einen Screensaver geschrieben, über Rückmeldungen würde ich mich freuen.
GDIPlus Screensaver
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;scripted by xp_fan from autoit.de;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;Thanks to UEZ autoit.de;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
_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]
HotKeySet("{ESC}", "Ende")
GUIRegisterMsg($WM_LBUTTONDOWN, "Ende")
_Main()
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
;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
$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)
$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
$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
;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)
Sleep(7)
Next
Sleep(3000)
WEnd
EndFunc ;==>_Main
Func Ende()
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>Ende