Seite 1 von 1

OpenWindowedScreen resize

Verfasst: 17.09.2019 09:53
von known
Hallo Zusammen,

bin absoluter Neuling und mache die ersten Gehversuche......

habe leider nichts in der Doku gefunden wie man beim ‚resizen‘ eines Fensters einen ‚OpenWindowedScreen‘ mitändern kann.

Code: Alles auswählen

InitSprite() 
InitKeyboard() 

x_size = 1024
y_size = 768

; 
w_main_h = OpenWindow(0,10,10,x_size,y_size,"not working", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) 

OpenWindowedScreen(w_main_h,0,0,x_size,y_size,0,0,0,#PB_Screen_WaitSynchronization) 

Repeat 
  ; 
  ClearScreen(0) 
  ; 
  
  x = (x+1) % x_size 
  y = (y+1) % y_size 
  
  
   
  StartDrawing(ScreenOutput()) 
    Box(0,y,x_size,20,RGB(255,0,0)) 
    Box(x,0,20,y_size,RGB(128,128,128)) 
  StopDrawing() 
  ; 
  FlipBuffers() 
  ; 
  event = WindowEvent() 
  ; 
  
  Select event
   
          Case #PB_Event_Gadget 
      quit = 1 

    Case #PB_Event_SizeWindow 
  ;richtiger Event?

  EndSelect
      
  
Until event = #PB_Event_CloseWindow 
; 
CloseScreen() 
CloseWindow(0)
würde gerne das Fenster (WindowedScreen) dynamisch in der Größe oder in Fullscreen zeichnen lassen, leider ist mir nicht klar wie ich die in ‚OpenWindow‘ und ‚OpenWindowedScreen‘ gesetzten Größen dynamisch ändern kann.....


oder ist der Ansatz völlig falsch?


Danke

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 09:57
von RSBasic
Hilfe hat geschrieben:OpenWindowedScreen(WindowID, x, y, Breite, Höhe [, AutoStretch, RightOffset, BottomOffset [, FlipModus]])
AutoStretch (optional): Ist dieser auf #True gesetzt, dann wird die Größe des Bildschirmbereichs automatisch angepasst (und der Inhalt auf die neue Bildschirm-Größe gezoomt), wenn sich die Fenstergröße ändert.
Wenn du die Fenstergröße manuell oder mit ResizeWindow() änderst, ändert sich auch der Screenbereich.

Meintest du das?

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 10:29
von Mijikai
Mit Tricks ist es immerhin möglich die Größe des Renderbereichs zu ändern.

Die Aspect Ratio jedoch wird nicht berücksichtigt somit ist AutoStretch oft nutzlos.

Um zu gewährleisten das Spiele/Animationen überall gleichschnell laufen kann SetFrameRate()
verwendet werden was momentan jedoch je nach VSync des Monitors zur hohen CPU Auslastung führen kann.
Bug im internen Timing/Eventhandling!

Also lieber eignen Timer Code schreiben da sonst die Anwendung nirgends gleich schnell laufen wird.

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 10:44
von RSBasic
Es gibt noch die Möglichkeit, per WinAPI die Größe des Screenbereichs zu ändern:

Code: Alles auswählen

SetWindowPos_(FindWindowEx_(WindowID(0),0,"Static",0), 0, 0, 0, WindowWidth(0), WindowHeight(0), #SWP_SHOWWINDOW | #SWP_NOZORDER | #SWP_FRAMECHANGED)
Ist aber fast das gleiche wie wenn man den Parameter AutoStretch benutzt. Der einzige Vorteil bei dieser Variante ist, dass man die Abstände selber bestimmen kann, so dass man z.B. daneben ein paar Gadgets plazieren kann.

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 11:52
von known
danke euch für die Infos .....

....leider fehlt mir der 'Pfennig and der Mark' wo ich anfangen soll :(


ich würde gerne das kleine Programm wie attached h***s://my.hidrive.com/lnk/kvggnahU (in B4J geschrieben) zum Anfang in PB nachbauen

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 12:09
von #NULL
Eventuell kannst du den Screen mit CloseScreen() schließen und erneut mit OpenWindowedScreen() öffnen. Du musst dann nur alle Sprites neu erstellen/laden.

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 12:40
von Kiffi
<OT>
known hat geschrieben:ich würde gerne das kleine Programm wie [...] (in B4J geschrieben) zum Anfang in PB nachbauen
nicht persönlich nehmen, aber ich glaube, niemand von uns hat Lust ein JAR von einem User auszuführen, der so kurz dabei ist.

Ein Screenshot wäre hier wohl besser.

</OT>

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 13:17
von known
:oops: oops sorry, daran hatte ich nicht gedacht ..... :oops:


habe mal ein screen recording gemacht, hoffe das ist OK h***s://my.hidrive.com/lnk/oZggH252

Re: OpenWindowedScreen resize

Verfasst: 17.09.2019 13:29
von RSBasic
Warum zensierst du deine Links? Links darfst du hier problemlos posten.

Re: OpenWindowedScreen resize

Verfasst: 18.09.2019 08:28
von Mijikai
Eventuell mit AutoStretch und dann die Sprites mit TransformSprite() korrigieren.