Grösse eines WindowedScreen mit Autostretch
Grösse eines WindowedScreen mit Autostretch
Wie kann man die aktuelle Größe eines WindowedScreen ermitteln, der mit Autostretch geöffnet wurde?
Repeat
PureBasic
ForEver
PureBasic
ForEver
Re: Grösse eines WindowedScreen mit Autostretch
Die Pixel auf dem Screen bleiben natürlich immer gleich (werden halt nur gezerrt.)
Die Breite des Fensters erhälst du über WindowWidth(), WindowHeight()
Die Breite des Fensters erhälst du über WindowWidth(), WindowHeight()
Code: Alles auswählen
InitSprite()
OpenWindow(1, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
OpenWindowedScreen(WindowID(1), 0, 0, WindowWidth(1), WindowHeight(1), 1, 0, 0)
Repeat
ClearScreen(0)
StartDrawing(ScreenOutput())
DrawingMode(1)
DrawText(0,0,"Breit: "+Str(WindowWidth(1)), $FFFFFF)
DrawText(0,20,"Hoch: "+Str(WindowWidth(1)), $FFFFFF)
StopDrawing()
FlipBuffers()
Until WindowEvent() = #PB_Event_CloseWindowPB 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
Re: Grösse eines WindowedScreen mit Autostretch
Ja, ich würde aber gerne die Grösse des WindowedScreen wissen und nicht die Fenstergrösse. Ich kann das natürlich auch mit WindowWidth nachrechnen, nur wollte ich sicherheisthalber vergleichen, ob der Screen auch wirklich so gross ist, wie das, was ich berechnet hab.
Repeat
PureBasic
ForEver
PureBasic
ForEver
Re: Grösse eines WindowedScreen mit Autostretch
ScreenWidth = WindowWidth - ScreenX - OffsetRight
ScreenHeight = WindowHeight - ScreenY - OffsetBottom
So rechnest du es aus.
Mach nen Screenshot, füge ihn in Paint oder sonstwas ein und schnippel alles außer den Screen weg. Dann haste die Größe. Aber ich bin mir ziemlich sicher, dass du das gleiche rausbekommt. Warum auch nicht?
ScreenHeight = WindowHeight - ScreenY - OffsetBottom
So rechnest du es aus.
Mach nen Screenshot, füge ihn in Paint oder sonstwas ein und schnippel alles außer den Screen weg. Dann haste die Größe. Aber ich bin mir ziemlich sicher, dass du das gleiche rausbekommt. Warum auch nicht?
Re: Grösse eines WindowedScreen mit Autostretch
Aber wenn der WindowedScreen im Fenster mit AutoStretch eingebunden ist, kann hat er genau die (inneren) Maße des Fensters (abzüglich der Position des Screens und abzüglich der Offsets rechts und unten)
Mit OutputWidth() und OutputHeight() könntest du zwar genau die größe des Ausgabebereiches ermitteln, aber Aufgrund der Stretch-Funktion sind diese Werte immer gleich dem Anfangswert.
Ansonsten gibs wohl nur API ...
Edit: Danke TomS für die Rechnung ^^
Mit OutputWidth() und OutputHeight() könntest du zwar genau die größe des Ausgabebereiches ermitteln, aber Aufgrund der Stretch-Funktion sind diese Werte immer gleich dem Anfangswert.
Ansonsten gibs wohl nur API ...
Edit: Danke TomS für die Rechnung ^^
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
Re: Grösse eines WindowedScreen mit Autostretch
Nein, ihr versteht mich nicht richtig. Ich habe beim Öffnen des Screens mit Autostrech als Grösse 1 angegeben. Autostretch füllt den Screen dann automatisch bis zur Fenstergrösse auf. Das heisst, ich bräuchte eine Funktion, die mir die Screengrösse zurückgibt. WindowWidth hilft mir da nicht weiter...
Repeat
PureBasic
ForEver
PureBasic
ForEver
Re: Grösse eines WindowedScreen mit Autostretch
1 ist keine Größe. Außer du meinst 1x1. Dann ist der Screen 1 Pixel hoch und 1 Pixel breit. Es wird nicht auf einmal 800x600 draus, nur weil das Fenster so groß ist.
Re: Grösse eines WindowedScreen mit Autostretch
Ja, ich hab für X,Y als Wert 1 genommen. Wie gesagt, ich könnte das auch anhand der Fenstergrösse ausrechnen, mir wäre es aber lieber wenn ich mit einer API-Funktion die aktuelle Grösse hätte.
Achso, okay....habs geschnalltEs wird nicht auf einmal 800x600 draus, nur weil das Fenster so groß ist.
Repeat
PureBasic
ForEver
PureBasic
ForEver
Re: Grösse eines WindowedScreen mit Autostretch
Kleine Demo:
Code: Alles auswählen
InitSprite()
InitMouse()
OpenWindow(0,0,0,800,600,"Alt+F4 zum beenden")
OpenWindowedScreen(WindowID(0),0,0,40,30,1,0,0)
CreateSprite(1, 20,15)
StartDrawing(SpriteOutput(1))
DrawText(0,0,"Hallo")
StopDrawing()
CreateSprite(2, 1,1)
StartDrawing(SpriteOutput(2))
Box(0,0,1,1,$0000FF)
StopDrawing()
Repeat
ExamineMouse()
ClearScreen($330000)
StartDrawing(ScreenOutput())
DrawText(-1,-3,Str(MouseX())+":"+Str(MouseY()))
StopDrawing()
DisplaySprite(1,19,14)
DisplaySprite(2,MouseX(),MouseY())
FlipBuffers()
Until WaitWindowEvent(20) = #PB_Event_CloseWindow