WindowedScreen - Auflösung ändern...

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

"volle FPS" ist auch wieder so'n politischer Ausdruck....

wozu brauchst du bei ner Simulation 240 Bilder pro Sekunde?
20, 25, 30 FPS ist schick genug, sowas geht auch mit Images...
http://www.purebasic.fr/german/viewtopic.php?t=19394


... und falls du wirklich nen zigtausend pixel breiten screen erzeugen willst um den Ausschnitt zu scrollen,
hat Fluid allerdings recht, dass das der falsche Ansatz ist.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

@Stargate: Aber nur weil alle (bzw. die Mehrheit) das so machen, heißt das eben noch lange nicht, dass dies der beste Weg ist. Vielleicht ist es denen bloß technisch auch nicht anders möglich. Aber ein in der Größe veränderbarer Screen ist doch klar ein Vorteil hinsichtlich Benutzerfreundlichkeit (ich stecke es nun mal in diese Schublade, die richtige dürfte, wenn, nicht weit entfernt sein). Das in Kombination mit relativen Größen des angezeigten Inhaltes ist das Optimum an Desktopintegration. Ich finde es ziemlich ätzend, ein Spiel gänzlich neu starten zu müssen (besonders bei Hammern wie Prey und ähnlichen), nur um die Auflösung zu ändern.

Wenn man zum Beispiel OpenGL benutzt, reicht es den ViewPort zu vergrößern bzw. verkleinern, ohne dass irgendetwas anderes groß geändert werden muss (vielleicht liegt es mal wieder (Verweis auf Threads) an DirectX selbst?). Wobei ich mir nicht vorstellen kann, dass es an DirectX liegt, da im DirectX SDK Anwendungen enthalten sind die ein Verändern der Renderfenstergröße erlauben (jedoch wird da nicht die Auflösung des Rendering Outputs angepasst).

Ein Grundsatz: Der Computer (bzw. die Software) soll sich an den Menschen der davor sitzt anpassen, nicht umgekehrt. Das halte ich für wichtig.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Fluid Byte hat geschrieben:
KeyKon hat geschrieben:Bei mir geht es um die Visualisierung einer Simulation bei der der Screen gescrollt werden kann, die sollte schon Pixel zu Pixel sein und auch mit vollen FPS laufen...
Falscher Denkansatz. Du scrollst nicht den Screen sondern den Inhalt. So funktioniert es bei OS-Fenstern ebenfalls. Dies kann ein Bild sein oder eine Datenmatrix wie bspw. bei einem MapEditor.
Mir is die Funktion von Scrollen bewusst, selbstverständlich scrolle ich auch den Inhalt und nicht den Screen, ich wollte damit nur ausdrücken das der Inhalt immer Pixel zu Pixel angezeigt werden kann, es wird lediglich mehr oder weniger angezeigt, der eigentliche Inhalt ist viel größer als der Screen...
(\/) (°,,,°) (\/)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Kapier ich nicht ...

Vielleicht mal ein anderes Satzzeichen außer Komma verwenden?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Ich krieg hier noch die krise, mein Problem hat sich doch schon gelöst -.-
-> Fenster is resizeable und Screen soll mitwandern und nich einfach gezoomt werden sondern Pixel zu Pixel bleiben
-> Da der inhalt eh gescrollt wird ist die Auflösung des Screens egal, es wird lediglich mehr oder weniger angezeigt

PUNKT.
(\/) (°,,,°) (\/)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Mehr wollt ich doch gar nicht wissen. <)
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Gut ^^
(\/) (°,,,°) (\/)
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Beitrag von hörmi »

rein interessehalber
wie hast du es gelöst?
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

So in der Art:

Code: Alles auswählen

InitSprite()

If Not OpenWindow(0,0,0,800,600,"Windowed Screen",#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget|#PB_Window_SystemMenu)
  End
EndIf

If Not OpenWindowedScreen(WindowID(0),0,0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN),0,0,0)
  End
EndIf

Global XScreen = 800
Global YScreen = 600

Repeat

  event = WindowEvent()
  
  Select event
    Case #PB_Event_CloseWindow
      End
    Case #PB_Event_SizeWindow, #PB_Event_MoveWindow
      XScreen = WindowWidth(0)
      YScreen = WindowHeight(0)
  EndSelect
  
  ClearScreen(0)
  
  StartDrawing(ScreenOutput())
    FrontColor(#White)
    BackColor(#Black)
    
    LineXY(0,0,XScreen,YScreen)
    LineXY(XScreen,0,0,YScreen)
    
    DrawText(XScreen-100,YScreen/2-10,"Width: "+Str(XScreen))
    DrawText(XScreen-100,YScreen/2+10,"Height: "+Str(YScreen))
  StopDrawing()
  
  FlipBuffers(#PB_Screen_WaitSynchronization)
  
ForEver
Zuletzt geändert von KeyKon am 09.05.2009 00:26, insgesamt 1-mal geändert.
(\/) (°,,,°) (\/)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

statt GetSystemMetrix könntest du auch ExamineDesktops anwenden... ;)

die Lösung mit

Code: Alles auswählen

    Case #PB_Event_SizeWindow
      XScreen = WindowWidth(0)
      YScreen = WindowHeight(0)
sieht gut aus. :allright:

btw:
http://www.purebasic.fr/german/viewtopi ... 999#243999

... also vielleicht

Code: Alles auswählen

Case #PB_Event_SizeWindow, #PB_Event_MoveWindow
verwenden, zur vollen Sicherheit.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten