OpenWindowedScreen resize

Anfängerfragen zum Programmieren mit PureBasic.
known
Beiträge: 3
Registriert: 17.09.2019 09:44

OpenWindowedScreen resize

Beitrag 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
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: OpenWindowedScreen resize

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: OpenWindowedScreen resize

Beitrag 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.
Zuletzt geändert von Mijikai am 17.09.2019 10:53, insgesamt 1-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: OpenWindowedScreen resize

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
known
Beiträge: 3
Registriert: 17.09.2019 09:44

Re: OpenWindowedScreen resize

Beitrag 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
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: OpenWindowedScreen resize

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: OpenWindowedScreen resize

Beitrag 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>
Hygge
known
Beiträge: 3
Registriert: 17.09.2019 09:44

Re: OpenWindowedScreen resize

Beitrag 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
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: OpenWindowedScreen resize

Beitrag von RSBasic »

Warum zensierst du deine Links? Links darfst du hier problemlos posten.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: OpenWindowedScreen resize

Beitrag von Mijikai »

Eventuell mit AutoStretch und dann die Sprites mit TransformSprite() korrigieren.
Antworten