GDI+ Script Problem

03/20/2014 13:32 ByteCatcher#1
Moin Moin ersma ^^

ich habe hier ein kleines Problem mit meinem Script. Ich wollte mir ein kleines Programm basteln (wird dann als kleiner Bildschirmschoner verwendet), das mittels GDI+ andauernd Linien zeichnet, bis die vorher definierte "Zeitvariable" (mehr so ein Zähler) mit dem ausgerechnetem Wert übereinstimmt, dann sollten alle Linien gelöscht werden, und alles von vorne beginnen, bis ich irgendwann das Programm beende. Allerdings wenn ich es starte, kommt nur die GUI und nichts passiert, bis ich ESC drücke. Script folgt unten und ich bedanke mich schonmal im vorraus für Hilfe :D

Code:
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
Local $DrawGUI, $hGraphic, $hPen
$DESKTOPHEIGHT= @DesktopHeight
$DESKTOPWIDTH= @DesktopWidth
$Time0= 0
$Time1= 1
$Time2= 0
$TimeDraw= Random ( 1, 500 )
$DrawGUI = GUICreate("DRAW", $DESKTOPWIDTH, $DESKTOPHEIGHT)
GUISetState(@SW_SHOW)
While 1
   Switch GUIGetMsg()
	  Case $GUI_EVENT_CLOSE
		 Exit
   EndSwitch
   $Rand0 = Random ( $DESKTOPHEIGHT, $DESKTOPWIDTH )
   $Rand1 = Random ( $DESKTOPHEIGHT, $DESKTOPWIDTH )
   $Rand2 = Random ( $DESKTOPHEIGHT, $DESKTOPWIDTH )
   $Rand3 = Random ( $DESKTOPHEIGHT, $DESKTOPWIDTH )
   _GDIPlus_Startup()
   $hGraphic = _GDIPlus_GraphicsCreateFromHWND($DrawGUI)
   $hPen = _GDIPlus_PenCreate()
   _GDIPlus_GraphicsDrawLine($hGraphic, $Rand0, $Rand1, $Rand2, $Rand3, $hPen)
   _GDIPlus_Shutdown()
   $Time2 = $Time0 + $Time1
   $Time2 = $Time0
   If $Time0 = $TimeDraw Then
	  _GDIPlus_GraphicsClear ( $hGraphic )
	  _GDIPlus_GraphicsDispose($hGraphic)
	  _GDIPlus_PenDispose($hPen)
	  $TimeDraw= Random ( 1, 500 )
   EndIf
WEnd
03/20/2014 14:34 lolkop#2
versuchs mal so:
Code:
#include <GDIPlus.au3>
Global $DrawGUI, $hGraphic, $hPen, $time, $TimeDraw = Random (1, 500, 1)
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND(GUICreate("DRAW", @DesktopWidth, @DesktopHeight, 0, 0, 0x90000000))

While True
	If GUIGetMsg()=-3 Then
		_GDIPlus_Shutdown()
		Exit
	EndIf
	_GDIPlus_GraphicsDrawLine($hGraphic, Random(0, @DesktopWidth, 1), Random(0, @DesktopHeight, 1), Random(0, @DesktopWidth, 1), Random(0, @DesktopHeight, 1))
	$time += 1
	If $time >= $TimeDraw Then
		_GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)
		$time=0
		$TimeDraw= Random (1, 500, 1)
	EndIf
WEnd
03/20/2014 14:35 Croco™#3
Es könnte daran liegen das du innerhalb der while schleife andauernd GDI+ initialisiert und wieder beendest.
03/20/2014 14:49 ByteCatcher#4
Danke an Lolkop, funzt jetze ^^