Los, wir werden GDI+ Missionare .
Darf ich auch?
Los, wir werden GDI+ Missionare .
Darf ich auch?
@Zocker-SZ: Aber ich hoffe das du denn nicht behaubtest das du das geschrieben hättest.
Lol, ... Keine Antwort ...
Da bin ich gespannt! Ehrlich...
Bestimmt ist es dein Pokemon Skript, nur eben mit Zelda
2. Keine ID
Ich habs getestet, man braucht keine ID.
ODER: cmd per run öffnen, und mit ControlSend() schreiben
Nö Worms werd ich ja net gebraucht, seid ja bestens versorgt !!!
Wie kommst du denn darauf?
@EM: Fängst du jetzt jeden Tag ein neues Spiel an? Gestern wars Worms, heute ist es Zelda und morgen, was weiß ich, Pokémon???
Dann ist vermutlich der Code immernoch von der Png, und lediglich die Dateiendung wurde verändert.
naja er hats so genommen wies war, verkehrt ?
Nö, ich hab doch gar nichts böses gesagt!
Noch was, @EM: hast du das Skript kapiert mit den Bildern laden?
Kann sein, aber es war keine transparents drinnen, wodurch man einen weißen Hintergrund hinter dem Wurm hatte.
Bau ihn dir doch einfach mit dem Koda Form Designer nach!
Keine Ahnung, was der schon wieder hat...
Naja egal, war ja nur kritik
Naja die Steuerung ist doof, und du hast Graphicsclear vergessen,
aber Ubuntu oder yxyx haben sicher nix dagegen.
Ich würde fürs Spiel .png Dateien nehmen, da diese dann auch tranzparent sein können.
Np:
#include <GDIPlus.au3>
#include <GUIConstants.au3>
Global $iWidth = 500
Global $iHeight = 500
Global $iPfad = ; <<<<< Schreib hier den Pfad des Bildes hin >>>>>>>>>>>
Global $hGui = GUICreate("", $iWidth, $iHeight)
GUISetState()
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
Global $hBild = _GDIPlus_ImageLoadFromFile($iPfad)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImageRect($hBuffer, $hBild, 0, 0, $iWidth, $iHeight) ; Kannst die Werte später wieder ändern
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_Exit()
EndSwitch
WEnd
Func _Exit()
_GDIPlus_ImageDispose($hBild)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
Exit
EndFunc
Hier, so sieht das Skript doch gleich mal viel schöner aus:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $ObjectPos1 = 100, $ObjectPos2 = 100, $ObjectPos3 = 50, $ObjectPos4 = 50
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{LEFT}", "_BewegenLinks")
HotKeySet("{RIGHT}", "_BewegenRechts")
HotKeySet("{UP}", "_BewegenOben")
HotKeySet("{DOWN}", "_BewegenUnten")
Global $GUIWidth = 600, $GUIHeight = 400
Global $Pos1 = 0, $Pos2 = 0
Global $GUI_Back_Color = 0xFF000000 + 0xECE9D8
Global $Form1 = GUICreate("EMs Journy of GDI+", 600, 400, -1, -1)
GUISetState(@SW_SHOW)
Global $Graphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
Global $Bitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $Graphic)
Global $Backbuffer = _GDIPlus_ImageGetGraphicsContext($Bitmap);Kreirt 2te Bitmap die dann auf Front Buffer übertragen wird
Global $Pen = _GDIPlus_PenCreate(0xFFFFA147)
Global $Brush = _GDIPlus_BrushCreateSolid(0xFFFFA147)
_GDIPlus_GraphicsFillRect($Graphic, 100, 100, 50, 50, $Brush)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_Exit()
Exit
EndSwitch
_ReDraw()
WEnd
Func _BewegenLinks()
_GDIPlus_GraphicsClear($Backbuffer, $GUI_Back_Color) ;Macht alles "Sauber"
If ($Pos1 - 50) <= 0 Then
$Pos1 = $GUIWidth
EndIf
If $Pos1 - 50 = 100 And $Pos2 = 100 Then
Else
$Pos1 -= 50
_GDIPlus_GraphicsDrawRect($Backbuffer, $Pos1, $Pos2, 50, 50)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
EndIf
EndFunc ;==>_BewegenLinks
Func _BewegenRechts()
_GDIPlus_GraphicsClear($Backbuffer, $GUI_Back_Color)
If ($Pos1 + 50) >= $GUIWidth Then
$Pos1 = -50
EndIf
If $Pos1 + 50 = 100 And $Pos2 = 100 Then
Else
$Pos1 += 50
_GDIPlus_GraphicsDrawRect($Backbuffer, $Pos1, $Pos2, 50, 50)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
EndIf
EndFunc ;==>_BewegenRechts
Func _BewegenOben()
_GDIPlus_GraphicsClear($Backbuffer, $GUI_Back_Color)
If ($Pos2 - 50) <= 0 Then
$Pos2 = $GUIHeight
EndIf
If $Pos2 - 50 = 100 And $Pos1 = 100 Then
Else
$Pos2 -= 50
_GDIPlus_GraphicsDrawRect($Backbuffer, $Pos1, $Pos2, 50, 50)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
EndIf
EndFunc ;==>_BewegenOben
Func _BewegenUnten()
_GDIPlus_GraphicsClear($Backbuffer, $GUI_Back_Color)
If ($Pos2 + 50) >= $GUIHeight Then
$Pos2 = -50
EndIf
If $Pos2 + 50 = 100 And $Pos1 = 100 Then
Else
$Pos2 += 50
_GDIPlus_GraphicsDrawRect($Backbuffer, $Pos1, $Pos2, 50, 50)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
EndIf
EndFunc ;==>_BewegenUnten
Func _Exit()
_GDIPlus_GraphicsDispose($Graphic)
_GDIPlus_GraphicsDispose($Backbuffer)
_GDIPlus_BitmapDispose($Bitmap)
_GDIPlus_PenDispose($Pen)
_GDIPlus_BrushDispose($Brush)
_GDIPlus_Shutdown()
EndFunc ;==>_Exit
Func _ReDraw()
_GDIPlus_GraphicsFillRect($Graphic, 100, 100, 50, 50, $Brush)
EndFunc ;==>_ReDraw
Und statt Hotkeys würde ich die Funktion
[autoit]
#include <Misc.au3>
_IsPressed()
[/autoit]Lade ein Bild mit
[autoit]_GDIPlus_ImageLoadFromFile()
[/autoit]
und male es in den Buffer mit
_GDIPlus_GraphicsDrawImageRect()
[/autoit]1. Warum machst du zweimal Shutdown?
2. Mach das Shutdown erst, nachdem du alles "disposed" hast!
3. Den Backbuffer "disposen" mit _GDIPlus_GraphicsDispose()
Warum erstellst du ein Fenster ohne alles mit Koda???
So, das sieht zwar schon mal ganz gut aus, allerdings Frage ich mich, warum du dieses Viereck in Stufen bewegst.
Also: Auf jeden Fall dein Skript verbessern!!! Und räum es etwas aus.
Wo eintragen?
Da gibts doch noch andere Funktionen drinnen, kannste die mal posten?
//Edit: Kommt irgeneine Fehlermeldung???