Hi,
hab mich jetzt mal an GDI+ versucht und dazu mal das Beispiel aus dem GDI+ Tutorial von Ubuntu angepasst. Problem ist nun allerdings, das die Figur manchmal beim drücken der Pfeiltasten schnell von einem Punkt auf den anderen springt oder generell plötzlich sich schneller bewegt. Woran könnte das liegen?
Spoiler anzeigen
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
OnAutoItExitRegister("_end")
[/autoit] [autoit][/autoit] [autoit]$x = 0
$y = 0
$Gui = GUICreate("Beispiel", 431, 400)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$figur = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\test.png")
$height = _GDIPlus_ImageGetHeight($figur)
$width = _GDIPlus_ImageGetWidth($figur)
$verhaelnis = $height / $width
$bk = _GDIPlus_ImageLoadFromFile("back.png")
[/autoit] [autoit][/autoit] [autoit]$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(431, 400, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap);
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case _IsPressed(25)
If $x > 0 Then
$x -= 1
EndIf
Case _IsPressed(26)
If $y > 0 Then
$y -= 1
EndIf
Case _IsPressed(27)
If $x < 410 Then
$x += 1
EndIf
Case _IsPressed(28)
If $y < 399 Then
$y += 1
EndIf
EndSelect
_GDIPlus_GraphicsDrawImageRect($buffer, $bk, 0, 0, 431, 400)
_GDIPlus_GraphicsDrawImageRect($buffer, $figur, $x, $y, 20, 20 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
WEnd
Func _end()
_GDIPlus_GraphicsDispose($graphic)
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose($figur)
_GDIPlus_ImageDispose($bk)
_GDIPlus_Shutdown()
EndFunc ;==>_end