Seite 1 von 3
OpenWindowedScreen, RightOffset funktioniert nicht
Verfasst: 31.07.2008 16:23
von E-P-S
Hallöchen, ich stell die Frage mal hier weil sie doch recht banal ist (höchstwahrscheinlich)
Zunächst mal folgender kleiner Codeauszug...
Code: Alles auswählen
If OpenWindow( 0, 0, 0, 800, 600, "Fenster", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_Maximize | #PB_Window_SizeGadget )
.
.
.
If OpenWindowedScreen( WindowID(0), 10, 10, WindowWidth(0), WindowHeight(0), 0, 50, 50 )
Die Werte für RightOffset und BottomOffset sind jetzt mal willkürlich, die Frage ist nur warum der Offset nicht funktioniert? Sollten diese Werte nicht dafür sorgen das nach rechts und unten ein Rand zwischen "Bildschirm" und Fenster bleibt - oder verstehe ich da was falsch?
Danke schonmal
Verfasst: 31.07.2008 16:35
von Fluid Byte
Offsets fuktionieren nur wenn "Autostretch" aktiviert ist.
Verfasst: 31.07.2008 16:38
von E-P-S
Ahh, verstehe. Danke für die Information.
Das möchte ich allerdings nicht, gibt es eine Möglichkeit die Größe des Bildschirms nach einem "SizeWindow" Event von Hand zu verändern?
Verfasst: 31.07.2008 16:43
von Andreas_S
Screen closen und wieder öffnen

Verfasst: 31.07.2008 16:46
von Fluid Byte
Ich werd' dich auch gleich mal "closen" ...
Verfasst: 31.07.2008 16:51
von Andreas_S
Fluid Byte hat geschrieben:Ich werd' dich auch gleich mal "closen" ...
Code: Alles auswählen
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
End
EndIf
If OpenWindow(0, 0, 0, 320, 140, "A screen in a window...", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
If CreateStatusBar(0, WindowID(0))
AddStatusBarField(320)
StatusBarText(0, 0, "Automatically zoomed screen area when changing window size...")
EndIf
If OpenWindowedScreen(WindowID(0), 10, 10, 1, 1, 1, 10, 10) ; wir benötigen nicht die exakte Bildschirmbreite/-höhe, da diese automatisch angepasst werden...
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
End
EndIf
EndIf
Repeat
; Es ist sehr wichtig, alle im Queue befindlichen Ereignisse während jedes Frames abzuarbeiten
;
Repeat
Event = WindowEvent()
If Event = #PB_Event_CloseWindow
End
EndIf
Until Event = 0
FlipBuffers()
ClearScreen(RGB(0, 0, 200))
Delay(1)
ForEver
Das reicht doch oder?
Verfasst: 31.07.2008 16:51
von E-P-S
Also ScreenClose wäre doof, dabei gehen ja alle Sprites verloren - das ist also keine Lösung (leider).
Nein, die Methode geht leider nicht, da ja das AutoStretch an ist und dies mir meine Sprites verzerrt - was ich nicht möchte.
Verfasst: 31.07.2008 17:05
von Andreas_S
Oh...
In OpenGL ist es möglich, weis aber jetzt nicht wie man beides verwenden kann.
Ich hab da aber mal ein bsp gesehn...
EDIT:
Ok hab mich geirrt, sorry...
Verfasst: 31.07.2008 17:13
von edel
Weiss zwar nicht ob das dies der richtige weg ist, funktioniert aber recht gut.
Code: Alles auswählen
Procedure LS()
CreateSprite(0,20,20)
StartDrawing(SpriteOutput(0))
Box(0,0,20,20,$874178)
StopDrawing()
EndProcedure
Procedure OS()
result = OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)
If result
LS()
EndIf
ProcedureReturn result
EndProcedure
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
End
EndIf
If OpenWindow(0, 0, 0, 320, 140, "A screen in a window...", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
If CreateStatusBar(0, WindowID(0))
AddStatusBarField(320)
StatusBarText(0, 0, "Automatically zoomed screen area when changing window size...")
EndIf
OS()
EndIf
Repeat
; Es ist sehr wichtig, alle im Queue befindlichen Ereignisse während jedes Frames abzuarbeiten
;
Repeat
Event = WaitWindowEvent(0)
If Event = #PB_Event_SizeWindow
CloseScreen()
OS()
EndIf
If Event = #PB_Event_CloseWindow
End
EndIf
Until Event = 0
DisplaySprite(0,10,10)
FlipBuffers()
ClearScreen(RGB(0, 0, 200))
Delay(1)
ForEver
Verfasst: 31.07.2008 17:18
von E-P-S
Dieser weg wäre eine Möglichkeit, allerdings erstellst auch du bei dieser Variante die Sprites neu.
Ich lade ca. 300 Sprites á 20x20 Pixel und das müsste ich dann auch machen was ziemlich, sagen wir mal unhandlich, ist.