Nach langer Zeit in dem ziemlich viel gut gelaufen ist,
und relativ viele Projekte für mich abgeschlossen sind,
Habe ich mal wieder ein Problem, dieses mal mit GDI's:
In einem Hauptmenü, das mit GDI+ gemacht ist,
wird das Bild für einen neuen Menüteil einfach nicht geladen,
wenn man auf den dafür vorgesehenden Button klickt.
Spoiler anzeigen
#include
#include
#include
#include
#include
#include
#include
#include
Opt("GuiOnEventMode", 1)
OnAutoItExitRegister("CleanOnExit")
Global Const $Width = 480
Global Const $Height = 320
Global $ii = 1
Global Enum $ST_main_menu = 0, $ST_playing, $ST_paused, $ST_game_over, $ST_enter_score, $ST_scores, $ST_options, $ST_pause_menu, $ST_intro, $ST_stats
Global $iStatus = $ST_main_menu
#region Sounddef
;Global $Soundname = _SoundOpen()
#endregion
#region gui
$GUI1 = GUICreate("Run!", $Width, $Height, -1, -1, BitOR($WS_POPUP, $WS_SYSMENU, $WS_MINIMIZEBOX, $WS_BORDER))
GUISetOnEvent($GUI_EVENT_CLOSE, "ende")
#endregion
[/autoit] [autoit][/autoit] [autoit]#region gdi
_GDIPlus_Startup()
$MainPlayer = _GDIPlus_ImageLoadFromFile(@scriptdir & "\Images\Player2.gif")
$MainHintergrund = _GDIPlus_ImageLoadFromFile(@scriptdir & "\Images\Hintergrundmain.jpg")
$OptHintergrund = _GDIPlus_ImageLoadFromFile(@scriptdir & "\Images\OptHintergrund.jpg")
$Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI1)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $Graphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
#endregion
GUISetState(@sw_show)
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(20)
Switch $iStatus
Case $ST_main_menu
$iStatus = Draw_Main()
Case $ST_playing
$iStatus = Draw_Playing()
Case $ST_options
$iStatus = Draw_Options()
Case $ST_intro
$iStatus = Draw_Intro()
Case $ST_stats
$iStatus = Draw_stats()
EndSwitch
WEnd
Func Draw_Main()
_GDIPlus_GraphicsDrawImageRect($hBuffer, $MainHintergrund, 0, 0, $Width, $Height) ; Hier funktioniert es perfekt....
_GDIPlus_GraphicsDrawImageRect($Graphic, $hBitmap, 0, 0, $Width, $Height)
Local $Mouseposmain = GUIGetCursorInfo($GUI1)
If _IsPressed(01) Then
Select
Case $Mouseposmain[0] > 246 And $Mouseposmain[0] < 430 And $Mouseposmain[1] > 16 And $Mouseposmain[1] < 61
Return $ST_playing
Case $Mouseposmain[0] > 246 And $Mouseposmain[0] < 430 And $Mouseposmain[1] > 184 And $Mouseposmain[1] < 226
Return $ST_options
Case $Mouseposmain[0] > 246 And $Mouseposmain[0] < 430 And $Mouseposmain[1] > 72 And $Mouseposmain[1] < 116
Return $ST_intro
Case $Mouseposmain[0] > 246 And $Mouseposmain[0] < 430 And $Mouseposmain[1] > 129 And $Mouseposmain[1] < 172
Return $ST_stats
Case $Mouseposmain[0] > 246 And $Mouseposmain[0] < 430 And $Mouseposmain[1] > 260 And $Mouseposmain[1] < 289
ende()
EndSelect
EndIf
EndFunc
Func Draw_Options()
_GDIPlus_GraphicsDrawImageRect($hBuffer, $MainHintergrund, 0, 0, $Width, $Height) ;...Selber Aufbau wie oben, aber das Bild wechselt nicht...
_GDIPlus_GraphicsDrawImageRect($Graphic, $hBitmap, 0, 0, $Width, $Height)
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func Draw_Playing()
EndFunc
Func Draw_Intro()
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func Draw_stats()
EndFunc
Func Draw_Pause()
EndFunc
Func Draw_GameOver()
EndFunc
Func ende()
Exit
EndFunc
Func CleanOnExit()
_GDIPlus_ImageDispose($OptHintergrund)
_GDIPlus_ImageDispose($MainHintergrund)
_GDIPlus_ImageDispose($MainPlayer)
_GDIPlus_GraphicsDispose($Graphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
EndFunc
Da ich nicht allzu viele Erfahrungen mit GDI's bisher gemacht habe,
bin ich mit diesem Projekt angefangen.
Als Grundbaustein hat mir dabei das Doodle Jump Projekt geholfen,
wie einige von euch sicher nicht unschwer erkennen können...
u.a. deswegen auch so viele includes...
ich hab's immer noch nicht drauf, welche ich raushauen kann...-.-
Vielen Dank im Vorraus