Hey Leute
Ich hab heute angefangen nen Spiel zu programmieren, hatte irgendwie mal wieder Lust darauf
Leider hab ich da gleich am Anfang schon ein Problem..
Also:
Es gibt ein Männchen, das heißt Jack^^ Der sollte halt rumlaufen und hüpfen und so Funktioniert auch alles super - zumindest mit weißem Hintergrund. Wenn ich mir aber vorstelle dass da mal ein Hintergrund hin soll, muss ich den Hintergrund von Jack transparent machen --> Da tauchen dann die Probleme auf.
- GuiCtrlCreatePic() unterstützt keine Transparenz..
- Mit GDI+ kenn ich mich nicht soo gut aus. So wie ich es nun gemacht habe mit Löschen und neu Zeichnen funktioniert es zwar, aber es flackert ziemlich..
Habe nur die Animation von Jack's Körper während er steht als Beispiel genommen:
Erste Variante mit Gui-Funktionen (weißes Viereck rund um Jack)
Spoiler anzeigen
#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode",1)
[/autoit] [autoit][/autoit] [autoit]$GUI=GUICreate("Fenster",800,500)
GUISetBkColor(0xFFFFFF)
GUISetState(@SW_SHOW)
GUICtrlCreatePic("skin/Hintergrund.jpg",0,0,800,500)
GUISetOnEvent($GUI_EVENT_CLOSE,"_close")
Local $left=350, $top=250
[/autoit] [autoit][/autoit] [autoit]$Jack = GUICtrlCreatePic("skin/Jack/Breath0.jpg",$left,$top,75,100)
GUICtrlSetState(-1,@SW_DISABLE)
AdlibRegister("_JackBreath",650)
[/autoit] [autoit][/autoit] [autoit]Func _JackBreath()
For $x=0 To 3 Step 1
GUICtrlSetImage($Jack,"skin/Jack/Breath"&$x&".jpg")
Sleep(150)
Next
EndFunc
Func _close()
Exit
EndFunc
While 1
Sleep(1)
WEnd
Zweite Variante mit GDI+ (flackert, durch das Löschen und wieder erstellen der Pics)
Spoiler anzeigen
#include <GuiConstants.au3>
#include <GDIPlus.au3>
Opt("GUIOnEventMode",1)
[/autoit] [autoit][/autoit] [autoit]$GUI=GUICreate("Fenster",800,500)
GUISetBkColor(0xFFFFFF)
GUISetState(@SW_SHOW)
GUICtrlCreatePic("skin/Hintergrund.jpg",0,0,800,500)
GUISetOnEvent($GUI_EVENT_CLOSE,"_close")
Local $left=350, $top=250
[/autoit] [autoit][/autoit] [autoit]$Jack=GUICtrlCreatePic("",$left,$top,75,110)
_GDIPlus_Startup()
$hGraphic=_GDIPlus_GraphicsCreateFromHWND($GUI)
$image = _GDIPlus_ImageLoadFromFile("skin/Jack/Breath0.png")
_GDIPlus_GraphicsDrawImage($hGraphic, $image, $left, $top)
AdlibRegister("_JackBreath",650)
Func _JackBreath()
For $x=0 To 3 Step 1
GUICtrlDelete($Jack)
$Jack=GUICtrlCreatePic("",$left,$top,75,110)
$image = _GDIPlus_ImageLoadFromFile("skin/Jack/Breath"&$x&".png")
_GDIPlus_GraphicsDrawImage($hGraphic, $image, $left, $top)
Sleep(150)
Next
EndFunc
Func _close()
Exit
_GDIPlus_Shutdown()
EndFunc
While 1
Sleep(1)
WEnd
Vlt hat jemand eine Idee wie es besser funktioniert Eventuell geht es auch dass man mit GDI+ einfach nur das Bild ändert anstatt es neu zu Zeichnen?
Wäre sehr dankbar darüber.
Mfg
Ijens