Habe heute begonnen mich etwas mit GDI-Plus zu beschäftigen. Bei meinem ersten Übungsscript kam folgendes raus:
Spoiler anzeigen
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
Global $set = 1, $brushbg,$brush,$brush1,$brush2
[/autoit] [autoit][/autoit] [autoit]global $Form1 = GUICreate("Form1", 800, 600, 110, 50,$WS_Popup)
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "move")
GUISetOnEvent(-3, "_Exit")
GUISetState()
_GDIPlus_Startup()
global $Graphic=_GDIPlus_GraphicsCreateFromHWND($Form1)
drawcar()
draw()
AdlibRegister("set",2000)
[/autoit] [autoit][/autoit] [autoit]global $xys = WinGetHandle("")
[/autoit] [autoit][/autoit] [autoit]While 1
WEnd
Func _Exit()
_GDIPlus_BrushDispose($brushbg)
_GDIPlus_BrushDispose($brush)
_GDIPlus_BrushDispose($brush1)
_GDIPlus_BrushDispose($brush2)
_GDIPlus_GraphicsDispose($Graphic)
_GDIPlus_Shutdown()
exit
EndFunc
func draw()
sleep(1)
$brushbg=_GDIPlus_BrushCreateSolid(0xff414141)
_GDIPlus_GraphicsFillRect($Graphic,0,0,140,350,$brushbg)
_GDIPlus_GraphicsFillRect($Graphic,60,350,20,350,$brushbg)
$brush=_GDIPlus_BrushCreateSolid(0xffff0000)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,25,100,100,$brush)
local $red=_GDIPlus_GraphicsDrawEllipse($Graphic, 20,25,100,100)
$brush1=_GDIPlus_BrushCreateSolid(0xffffff00)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,130,100,100,$brush1)
local $yellow=_GDIPlus_GraphicsDrawEllipse($Graphic, 20,130,100,100)
$brush2=_GDIPlus_BrushCreateSolid(0xff00ff00)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,235,100,100,$brush2)
local $Green=_GDIPlus_GraphicsDrawEllipse($Graphic, 20,235,100,100)
EndFunc
func drawcar()
local $hImgBack = _GDIPlus_ImageLoadFromFile("car.gif")
_GDIPlus_GraphicsDrawImageRect($Graphic,$hImgBack,200,200,450,450)
EndFunc
func drive()
for $1 = 450 to 390 step -20
for $3 = 200 to 140 step -20
local $hImgBack = _GDIPlus_ImageLoadFromFile("car.gif")
_GDIPlus_GraphicsDrawImageRect($Graphic,$hImgBack,200,$3,$1,$1)
next
next
EndFunc
func set()
If $set = 1 Then
_GDIPlus_GraphicsFillEllipse($Graphic, 20,25,100,100)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,130,100,100)
$set = $set +1
drive()
Elseif $set = 2 then
_GDIPlus_GraphicsFillEllipse($Graphic, 20,235,100,100)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,130,100,100,$brush1)
$set = $set +1
elseif $set = 3 Then
_GDIPlus_GraphicsFillEllipse($Graphic, 20,130,100,100)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,25,100,100,$brush)
$set = $set +1
elseif $set = 4 Then
_GDIPlus_GraphicsFillEllipse($Graphic, 20,130,100,100,$brush1)
$set = $set +1
elseif $set = 5 Then
drawcar()
_GDIPlus_GraphicsFillEllipse($Graphic, 20,25,100,100)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,130,100,100)
_GDIPlus_GraphicsFillEllipse($Graphic, 20,235,100,100,$brush2)
$set = 1
endif
EndFunc
func move()
DllCall("user32.dll","int","SendMessage","hWnd", $xys,"int",$WM_NCLBUTTONDOWN,"int", $HTCAPTION,"int", 0)
EndFunc
Ich wollte mal fragen, ob ich das Auto nicht "flüssiger" zum laufen bekomme und ob ich die Farben der Ampel nur durch übermalen ändern kann
Auch würde mich interessieren ob ich irgendwelche Grundlegende Fehler gemacht habe und was verbesserungswürdig ist
Eine kleine Anmerkung noch ;D
Das Script ist völlig Sinnlos, da es nur eine Übung ist.
Bild fürs Script:
autoit.de/wcf/attachment/9839/.