[Blockierte Grafik: http://fs1.directupload.net/images/141215/8bcq6qym.png]
Ich habe eine grafische Uhr in AutoIt programmiert.
Das ganze ist nichts großes. Allerdings ist es mein erstes Programm wo ich den Vorgang als Video für YouTube aufgenommen habe. Also mein erstes YouTube-Video :).
Hier die Links.
Teil 1: https://www.youtube.com/watch?v=1c53XnOzsq8
Teil 2: https://www.youtube.com/watch?v=VJTN44uo7HM
Freue mich über Kritik.
Hier der Code:
[autoit]#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
Global $window
Global $window_size = 500
Global $window_title = "Uhr"
Global $window_timer
Global $graphics
Global $bitmap
Global $buffer
Global $pen
Global $pen_minute, $pen_hour, $pen_second
Global $PI = 3.14159265359
[/autoit][autoit][/autoit][autoit]init()
[/autoit][autoit][/autoit][autoit]func init()
$window = GUICreate($window_title,$window_size,$window_size)
_GDIPlus_Startup()
[/autoit][autoit][/autoit][autoit]$graphics = _GDIPlus_GraphicsCreateFromHWND($window)
$bitmap = _GDIPlus_BitmapCreateFromGraphics($window_size,$window_size,$graphics)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$pen = _GDIPlus_PenCreate(0xFF333333,10)
$pen_minute = _GDIPlus_PenCreate(0xFFDDDDDD,3)
$pen_hour = _GDIPlus_PenCreate(0xFF666666,3)
$pen_second = _GDIPlus_PenCreate(0xFFFF0000,2)
_GDIPlus_GraphicsSetSmoothingMode($buffer,2)
[/autoit][autoit][/autoit][autoit]GUISetState(@SW_SHOW,$window)
[/autoit][autoit][/autoit][autoit]$window_timer = TimerInit()
[/autoit][autoit][/autoit][autoit]main()
EndFunc
func main()
Do
if TimerDiff($window_timer) >= 30 then
$window_timer = TimerInit()
update()
EndIf
Until GUIGetMsg() = $GUI_EVENT_CLOSE
close()
EndFunc
func close()
_GDIPlus_PenDispose($pen)
_GDIPlus_PenDispose($pen_minute)
_GDIPlus_PenDispose($pen_hour)
_GDIPlus_PenDispose($pen_second)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_Shutdown()
[/autoit][autoit][/autoit][autoit]GUIDelete($window)
EndFunc
Func update()
_GDIPlus_GraphicsClear($buffer,0xFFFFFFFF)
_GDIPlus_GraphicsDrawEllipse($buffer,50,50,$window_size-100,$window_size-100,$pen)
[/autoit][autoit][/autoit][autoit]$rad = 0
$diff = ($PI*2) / 12
Do
_GDIPlus_GraphicsDrawLine($buffer,$window_size/2+sin($rad)*180,$window_size/2+cos($rad)*180,$window_size/2+sin($rad)*200,$window_size/2+cos($rad)*200,$pen)
$rad += $diff
Until $rad >= $PI*2
;minute
$rad = -(($PI*2) / 60) *@MIN-$PI
$value = 150
_GDIPlus_GraphicsDrawLine($buffer,$window_size/2,$window_size/2,$window_size/2+sin($rad)*$value,$window_size/2+cos($rad)*$value,$pen_minute)
;hour
$rad = -(($PI*2) / 12) *@HOUR-$PI
$value = 80
_GDIPlus_GraphicsDrawLine($buffer,$window_size/2,$window_size/2,$window_size/2+sin($rad)*$value,$window_size/2+cos($rad)*$value,$pen_hour)
;second
$rad = -(($PI*2) / 60) *@SEC-$PI
$value = 170
_GDIPlus_GraphicsDrawLine($buffer,$window_size/2,$window_size/2,$window_size/2+sin($rad)*$value,$window_size/2+cos($rad)*$value,$pen_second)
_GDIPlus_GraphicsDrawImage($graphics,$bitmap,0,0)
EndFunc