verschiedene Auflösungen, strecken?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Boris0190

Betreff: verschiedene Auflösungen, strecken?

BeitragSo, März 07, 2004 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich bin dabei ein Spiel zu erstellen. Man soll am Anfang auswählen können, welche Auflösung man haben möchte. Kann ich das irgendwie emulieren, dass er auch bei einer Auflösung von, sagen wir 800x600 die Bilder so malt wie bei 1024*768? oder muss ich da jedes mal umrechnen, wo ich das jetzt alles hin male!?
If windows is the sollution, I want my problems back! -
The only way to have a friend is to be one

Mike Nike

BeitragSo, März 07, 2004 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
oder muss ich da jedes mal umrechnen, wo ich das jetzt alles hin male!?


Also diese letzte Aussage lässt ja irgendwie darauf schliessen, dass es dir (auch) um die Positionierung der Grafiken geht. Also fragst du nach der dynamischen Grafikplatzierung, unabhängig von der Auflösung. Klar musst du leider vorher die Grafiken strecken, mit ResizeImage oder ScaleImage, um die richtige Größe zu erhalten. Die Positionen kannst du allerdings abhängig von der Bildschirmauflösung ganz einfach durch die Befehle GraphicsWidth() und GraphicsHeight() machen. Diese relative Positionierung verhindert, dass du irgendwelche anderen mathematischen Formeln austüfteln müsstest, bzw. es erspart dir die Schreibarbeit, die für absolute Positionierung fällig wäre.

Jenachdem, ob du zum Beispiel für ein Image MidHandle auf True setzt kannst du es genau in die Mitte des Screens positionieren, ohne absolute Angaben geben zu müssen:

DrawImage GraphicsWidth()/2,GraphicsHeight()/2,Image

bzw.

DrawImage GraphicsWidth()/2-ImageWidth()/2,GraphicsHeight()/2-ImageHeight()/2,Image
..where the only limit is your imagination.

Kryan

BeitragSo, März 07, 2004 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
toll, bei mehr pixel möchte man MEHR details und wenn man skaliert, dann
sieht das genauso aus wie bei 640x480 oder so! nur menüfunktionen und so würde ich dann auf die größe einstellen, sonst NIX!
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Mike Nike

BeitragSo, März 07, 2004 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
toll, bei mehr pixel möchte man MEHR details und wenn man skaliert, dann
sieht das genauso aus wie bei 640x480 oder so! nur menüfunktionen und so würde ich dann auf die größe einstellen, sonst NIX!

Du hast im Prinzip Recht. Und eventuell will das Boris auch. Aber sollte man nicht eher davon ausgehen, dass er (nur) das will, was er sagt? Er will ja anscheinend, dass der Spielbereich sich durch die Auflösung NICHT ändert - ich glaube, sonst hätte er den Thread gar nicht erst aufgemacht...

Wenn man MEHR Details will, dann denkt man sich folgendes:

Durch diese Aussage
Zitat:
Kann ich das irgendwie emulieren, dass er auch bei einer Auflösung von, sagen wir 800x600 die Bilder so malt wie bei 1024*768?

wird ja wohl klar, dass er wahrscheinlich Grafiken auf 1024x768 Ebene optimiert hat. Dadurch streckt er ja eher die Grafiken mit einem Faktor unter 1 - er verkleinert sie also. Dadurch werden die Grafiken relativ pixeliger würde ich mal sagen, je nach Methode. Also kann man sagen, dass bei einer hohen Auflösung eine wahrscheinlich bessere Qualität existiert, wenn er nicht gerade über die 1024er Breite geht...
..where the only limit is your imagination.

Boris0190

BeitragSo, März 07, 2004 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
thx Mike, hast vollkommen recht, mit graphicsheight() gehts auch, zumindest ein großer Teil, leider nicht alles folgendes geht nicht:
ich möchte ein Raster zeichnen, das ganze sieht wie folgt aus:
Code: [AUSKLAPPEN]

For a=1 To 768 Step 4
b=b+1
if b=6 Then b=0:Line 0,a,10,a
Line 0,a,5,a

das ganze is jetzt auf 1024*768 "genormt" wenn ich jetzt das ganze allgemein schreiben will:
Code: [AUSKLAPPEN]

For a=1 To graphicsheight() Step graphicsheight()/192
b=b+1
if b=6 Then b=0:Line 0,a,10,a
Line 0,a,5,a


Klappt das nicht, da ich beim "Step" Befehl keine Variablen verwenden darf... Kann ich das irgendwie umgehen?
If windows is the sollution, I want my problems back! -
The only way to have a friend is to be one
 

Ava

Gast

BeitragSo, März 07, 2004 23:24
Antworten mit Zitat
Du könntest Repeat/Until oder While/Wend - Schleifen verwenden, und den Counter und Steps selbst regeln:

Code: [AUSKLAPPEN]
counter# = 0
counter_steps# = graphicswidth() / 100.00
while counter# < graphicswidth()
//CODE//
counter# = counter# + counter_steps#
wend


z.B.

Du könntest aber auch ne For/Next Schleife verwenden, und die Werte innerhalb der Schleife umrechnen. Wie du magst. Aber möglichkeiten gibt es da schon. Wink

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, März 07, 2004 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Bau dir doch eine eigene for next schleife mit while wend
um den Step befehl zu umgehen

beispiel:
Code: [AUSKLAPPEN]
a=1
While a <= GraphicsHeight()
b=b+1
If b=6 Then b=0:Line 0,a,10,a
Line 0,a,5,a
a= a + GraphicsHeight()/192
Wend
[BB2D | BB3D | BB+]

Boris0190

BeitragMo, März 08, 2004 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
mh Klar logisch! Hätt ich aber auch selber drauf kommen können, Aber thx 4 help Smile
If windows is the sollution, I want my problems back! -
The only way to have a friend is to be one

Ctuchik

BeitragMo, März 08, 2004 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie ist das allgemein, wenn man das Bild in 1280 x 1024 rendert und dann runterrechnet?

Code: [AUSKLAPPEN]

Global ThirdBuffer = CreateImage(1280,1024)
Global width = 1024
Global height = 768

Graphics width, height, 0, 1

While Not KeyHit(1)
  Update()
  SetBuffer ImageBuffer(ThirdBuffer)
  Zeichnen()
  SetBuffer BackBuffer()
  ResizeImage ThirdBuffer,width,height
  DrawBlock ThirdBuffer,0,0
  Flip
Wend


Wäre das arg langsam? Ich hab auch gehört, dass es schnellere Resize-Funktionen geben soll, als die Standard-Funktion!
Wäre das ne Möglichkeit?

mfG Ctuchik
 

Edlothiol

BeitragMo, März 08, 2004 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wäre viiieeel zu langsam. Und die anderen Funktionen wären vermutlich auch nicht schnell genug Confused

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group