für dieses Beispiel müsst ihr noch ein Bild laden. Die Prozeduren sind für ein anderes Projekt gedacht, und sollen später mal dafür sorgen, dass ein Bild gezoomt dargestellt werden kann, ohne dies durch ein ständiges "On-the-Fly"-Größenverändern zu machen; sondern es soll ein Bild nur einmal in der Größe verändert, dann auf ein screengroßes Image gerendert, und dieses Image soll dann immer angezeigt werden. (Dieses kann man dann bspw. auch scrollen; weil Scrollen mit On-the-Fly-Resize ist zäh

Erst wenn eine Änderung im Anzeig-Modus kommt, wird das Anzeigebild neu gerendert ... ist natürlich noch nicht fertig und erst ein Flag ist möglich ...
... womit wir beim Thema wären: Eigentlich bin ich der Meinung, dass der Code richtig ist, jedoch spuckt mir der Debugger ein ominöses
bei StartDrawin(ScreenOutput()) aus. Jedoch erst beim Zweiten Schleifendurchlauf. Was mich aber am meisten irritiert: Ohne Debugger läuft das Programm ohne Abbruch. Nur ohne Debugger zu coden ist ... suboptimal[ERROR] The specified output is NULL (0 value)

BTW: Vorher hatte ich die 4.20 Beta2 -- da brach er mit dem internen Debugger bei gleicher Fehlermeldung ab; der externe hatte da keine Probleme. Deswegen habe ich PB geupdatet -- nun funzt es mit keinem Debugger mehr ...
Könnt ihr das Verhalten bei euch reproduzieren? Mach ich was mit dem Wechsel von ImageOutput() zu ScreenOutput() falsch? Liegt es am PB-Debugger? Fragen über Fragen ...
hat jemand eine Antwort?
TIA!
Code: Alles auswählen
;Sry für das Denglisch :)
Global height
Global width
;Auflösung des Screens
height =960
width =1280
InitSprite()
InitKeyboard()
UseJPEGImageDecoder()
OpenScreen(width,height,32,"DrawImage")
Global bild
bild=LoadImage(#PB_Any,"01.jpg")
Enumeration
#FitWidth
#FitHeight
#Centered
#PrePaint
EndEnumeration
Procedure PreDrawImage(ImageID,flag=#FitWidth)
Debug "PreDrawImage() called"
CreateImage(#PrePaint,width,height)
Select flag
Case #FitWidth
Debug "Mode FitWidth"
Debug ImageWidth(bild)
Debug ImageHeight(bild)
b.d = ImageWidth(bild)
h.d = ImageHeight(bild)
ratio.d = b/h
Debug "This should Not be null"
Debug "ratio="
Debug ratio
If ratio=0
Debug "Damn"
EndIf
p_height.d =width/ratio
p_height=Round(p_height,0)
p_width.d =width
x =0
y =0
EndSelect
StartDrawing(ImageOutput(#PrePaint))
Debug "Pwidth and pheiht"
Debug p_width
Debug p_height
If IsImage(bild)
DrawImage(ImageID(Bild),x,y,p_width,p_height)
Else
Debug "damn"
End
EndIf
StopDrawing()
StartDrawing(ScreenOutput())
DrawImage(ImageID(#PrePaint),0,0)
StopDrawing()
FlipBuffers()
Debug "PreDrawImage() exit"
EndProcedure
Procedure DrawImageOnScreen(ImageID,Mode)
Debug "Prozdur DrawImage called"
If IsImage(#PrePaint)=#False
Debug "Prepaint is no Image"
PreDrawImage(ImageID,Mode)
Debug "Call DrawImageOnScreen"
DrawImageOnScreen(ImageID(#PrePaint),Mode)
Else
Debug "Prepaint is a Image"
Debug "Try to draw"
ClearScreen(RGB(255,0,0))
StartDrawing(ScreenOutput())
DrawImage(ImageID(#PrePaint),0,0)
StopDrawing()
FlipBuffers()
EndIf
EndProcedure
i=0
Repeat
PreDrawImage(bild,#FitWidth)
ClearScreen(RGB(0,0,0))
Debug "ScreenOutput"
ExamineKeyboard()
Delay(10)
Debug "Durchlauf #"+Str(i)
i+1
Until KeyboardPushed(#PB_Key_Escape)