Hi,
bei folgenden Script wollte ich eigentlich lediglich, dass sich das Hintergrundbild statt der Figur verschieben. Anzumerken ist dabei, das das Hintergrundbildt mit "_GDIPlus_GraphicsDrawImageRectRect" wurde. Aber anstatt sich zu verschieben wir es einfach "zusammengestaucht".
Please help
Spoiler anzeigen
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt("GuiOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]OnAutoItExitRegister("_end")
[/autoit] [autoit][/autoit] [autoit]$x = 0
$y = 0
$Gui = GUICreate("Beispiel", 400, 400)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
_GDIPlus_Startup()
$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
Select
Case _IsPressed(25)
If $x > 0 Then
$x -= 2
EndIf
Case _IsPressed(26)
If $y > 0 Then
$y -= 2
EndIf
Case _IsPressed(27)
If $x < 410 Then
$x += 2
EndIf
Case _IsPressed(28)
If $y < 399 Then
$y += 2
EndIf
EndSelect
_GDIPlus_GraphicsDrawImageRectRect($buffer, $bk, $x, $y, 431, 400, $x, $y, 832, 800)
_GDIPlus_GraphicsDrawImageRect($buffer, $figur, 200, 200, 20, 20 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
WEnd
Func CLOSEClicked()
Exit
EndFunc ;==>CLOSEClicked
Func _end()
_GDIPlus_GraphicsDispose($graphic)
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose($figur)
_GDIPlus_ImageDispose($bk)
_GDIPlus_Shutdown()
EndFunc ;==>_end