Moin,
nach gefühlt 86986 Jahren habe ich mal wieder eine Frage
Ich möchte in einen 1920x1080 Window einen 640x480 Screen auf die gesamte Windowgröße skalieren. ich weiß, dass man, wenn man Autostretch gesetzt hat, mit der Maus den Window Inhalt automatisch auf die Größe skalieren kann. Ich möchte es aber, dass dieses im Programm automatisch erfolgt.
Gibt es da einen passenden Befehl oder gibt es da ne andere Lösung?
Auzug:
If OpenWindow(0, 0, 0, 1920, 1080, "blabla", #PB_Window_BorderLess)
If OpenWindowedScreen(WindowID(0), 240, 0, 640, 480, #False, 0, 0, #PB_Screen_WaitSynchronization)
So wird nur in der Tat ab x240 640x480 dargestellt. Ich dachte immer, dass dann 640x480 automatisch auf die gesamte Windowfläche gestetcht wird.
bis denne...
North
640x480 auf 1920x1080 strecken
-
- Beiträge: 103
- Registriert: 25.08.2013 18:04
- Computerausstattung: alles mögliche^^
- Wohnort: Schöppenstedt
- Kontaktdaten:
Re: 640x480 auf 1920x1080 strecken
Du musst da vermutlich nachhelfen mit ResizeWindow:
Code: Alles auswählen
Enumeration
#Window
EndEnumeration
InitSprite()
OpenWindow(#Window, 0, 0, 480, 270, "A screen in a window...", #PB_Window_BorderLess | #PB_Window_ScreenCentered | #PB_Window_Invisible)
OpenWindowedScreen(WindowID(#Window), 0, 0, 480, 270, 1, 0, 0)
ResizeWindow(#Window, 0, 0, 1920, 1080)
HideWindow(#Window, #False)
Repeat
Repeat
Select WindowEvent()
Case #PB_Event_None
Break
Case #PB_Event_CloseWindow
Break 2
EndSelect
ForEver
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
If StartDrawing(ScreenOutput())
DrawText(10, 10, "Hallo Welt!", $FFFFFF, $000000)
StopDrawing()
EndIf
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 103
- Registriert: 25.08.2013 18:04
- Computerausstattung: alles mögliche^^
- Wohnort: Schöppenstedt
- Kontaktdaten:
Re: 640x480 auf 1920x1080 strecken
hat geklappt das mit dem ResizeWindow
Nur.... wird beim stretchen das Größenseitenverhältnis nicht eingehalten. ein Bug evtl?
Konnte ich aber so lösen, dass ich ein angepasstes Window benutzt habe.
OpenWindow(1, 240, 0, 640, 480, "main", #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(1), 0, 0, 640, 480, #True, 0, 0, #PB_Screen_WaitSynchronization)
ResizeWindow(1, 240, 0, 1440, 1080)
StartDrawing(ScreenOutput())
DrawImage(ImageID(2),0,0)
StopDrawing()
Kurioserweise musste ich links und recht den Leerbereich ausrechnen und in x (Wert 240) angeben, sonst wäre die Grafik wieder fehlerhaft angezeigt beim stretchen.
Ich dachte wirklich das, wenn man bei dem Befehl "If OpenWindowedScreen" die angegeben Pixelwerte automatisch an das zugrundelegende Window angepasst wird, wenn man die Funktion "Stretch" auf True setzt. Vielleicht könnte man den Befehl so noch erweitern, dass das "Größerziehen" auch gleich, und nicht erst beim manuellen Fenstervergrößern funktioniert. Auch das Größenseitenverhältnis beibehalten (auf Wunsch) wäre noch was.
Ist aber nur so ein Gedankengang von mir.
Nur.... wird beim stretchen das Größenseitenverhältnis nicht eingehalten. ein Bug evtl?
Konnte ich aber so lösen, dass ich ein angepasstes Window benutzt habe.
OpenWindow(1, 240, 0, 640, 480, "main", #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(1), 0, 0, 640, 480, #True, 0, 0, #PB_Screen_WaitSynchronization)
ResizeWindow(1, 240, 0, 1440, 1080)
StartDrawing(ScreenOutput())
DrawImage(ImageID(2),0,0)
StopDrawing()
Kurioserweise musste ich links und recht den Leerbereich ausrechnen und in x (Wert 240) angeben, sonst wäre die Grafik wieder fehlerhaft angezeigt beim stretchen.
Ich dachte wirklich das, wenn man bei dem Befehl "If OpenWindowedScreen" die angegeben Pixelwerte automatisch an das zugrundelegende Window angepasst wird, wenn man die Funktion "Stretch" auf True setzt. Vielleicht könnte man den Befehl so noch erweitern, dass das "Größerziehen" auch gleich, und nicht erst beim manuellen Fenstervergrößern funktioniert. Auch das Größenseitenverhältnis beibehalten (auf Wunsch) wäre noch was.
Ist aber nur so ein Gedankengang von mir.