Bildschirmgröße ändert sich

moritzmoritz

Mitglied
Hallo,

ich bin momentan dabei ein 2D-Game zu programmieren, das funktioniert soweit auch ganz gut...

nur mache ich mir die ganze Zeit schon Gedanken, wie sich mein Spiel verhalten soll, wenn die Größe des Fensters nicht vorgegeben ist?

gibt es eine Möglichkeit Bilder "je nach belieben" zu vergrößeren und zu verkleinern? Weil bisher arbeite ich nur mit .png-datein ... und die haben ja nunmal eine fixe Größe (bsp. 50x50px), aber auf einem größeren Fenster will ich genau das gleiche wie auf einem kleineren Fenster sehen.

Ich hoffe, dass ich mich verständlich ausgedrückt habe und jemand mein Problem verstanden hat :)

Schönes Wochenende euch,

Moritz
 

Fab1

Top Contributor
Ich würde am Anfang dem GamePanel einfach eine fixe Größe geben und nur das "außenrum" vergrößern/ -kleinern

Ansonsten kannst du dir ja mal Java ist auch eine Insel – 14.9 Bilder anzeigen und Grafiken verwalten anschauen. Vielleicht ist da was dabei. Müsstest halt immer, wenn die Größe des Fensters verändert wird, die Bilder entsprechend aktualisieren. (evtl. mit Observer Pattern, falls sich das irgendwie realisieren lässt)

Aber im Detail hab ich mich damit leider auch noch nicht befasst. Viel Erfolg.
 

BRoll

Bekanntes Mitglied
Ich machs immer so,
das ich ein BufferedImage als Zeichengrund nehme.
Und darin zeichne ich das Spielgeschehen rein.
Das BufferedImage hat eine fixe Größe, welche
die InGame-Auflösung ist. Zb. 1000x600.

Und dann kann ich einfach das BufferedImage selber am
Ende am Bildschirm in einer beliebigen Größe anzeigen-
dadurch wird alles mit der richtigen Größe angezeigt.

So sieht das im Code aus:

Java:
private  BufferedImage screen =new BufferedImage(1000,600,BufferedImage.TYPE_INT_RGB);

public void paint(Graphics p)
	{

            Graphics g=screen.getGraphics();

           //So jetzt alle Zeichenvorgänge mit  der Graphics  g machen
         
             //Und zum Schluss
            	p.drawImage(screen,0,0,breite,hoehe,null);
               }
So kann man breite und hoehe beliebig einstellen.
 

BRoll

Bekanntes Mitglied
also heißt das, wenn das Objekt einen x-Punkt (weite der Spielgrafik 1000-weite des Objekts) hat ist es am Rand angekommen? :)

Wie sieht's denn mit der Schärfe aus, wenn ich mit 32x32px-Grafiken arbeiten sollte? Wird das nicht ziemlich unscharf? ...

Moritz

Ja das ist ja das gute daran. Du kannst immer mit der InGame Auflösung rechnen,
obwohl sich die eigentliche Auflösung anders sein kann.
Die Mauspositionen muss man dann bloß Rückrechnen, ist aber auch kein
Problem.

Schärfe ist natürlich wenn das Fenster genausogroß wie die InGame Auflösung
ist, am Besten. Ist genauso ansonsten wie wenn du ein Bild vergrößerst oder
verkleinerst. Bloß auf pixelgenauer Ebene. Dh. in Java wird die Vergrößerung/Verkleinerung
mit Pixelwiederholung umgesetzt.

Hier siehst du wie das mit einem Testbild aussehen würde: http://www.teialehrbuch.de/Kostenlose-Kurse/Adobe-Photoshop/images/01_33.jpg

mfg BRoll
 

moritzmoritz

Mitglied
Also sollte man mit größeren Grafiken arbeiten?

Gibt es denn eine Übersicht von heutigen Standardgrößen von Bildschirmen? Was ist das "größte" was ist das "kleinste"?
 

BRoll

Bekanntes Mitglied
Also sollte man mit größeren Grafiken arbeiten?

Das kann man ganz einfach beantworten:

Umso größer du deine Grafiken machst, desto besser ist das Ergebnis-
da auch bei sehr hohen Auflösungen das Bild nicht vergrößert werden muss.
Jedoch ist der Verwaltungsaufwand größer, Ladezeiten länger und
die Framerate geht auch irgendwann in den Keller.
Besonders wenn man mit Java einfach mit AWT arbeitet sollte
man das Zeichnen von großen Bildern seinlassen, wenn das Programm
schnell laufen solllte.
Und dann ist da auch noch das Format des Bildes wichtig.
Umso kleiner die Datei, desto schneller läufts jedoch meistens
auch schlechtere Qualität.

Also musst du einen Mittelweg für dan Anwendungszweck suchen.

Pauschal kann mans aber nicht sagen.:)
 

moritzmoritz

Mitglied
Sry für den Doppelpost:

Habe das jetzt mit dem Screen und dem .getGraphics() probiert, kriege aber immer eine NullPointerException ... warum? Habe ein "leeres" BufferedImage erstellt, kann es daran liegen?

EDIT:
Außerdem habe ich irgendwie einen Abstand von 10px von links und von oben .. wodran kann das liegen, wenn ich nämlich ein Objekt erzeuge wird es bei x=0 und y=0 in echt bei x=10 und y=10 gezeichnet .. hat das JPANEL einen Abstand, und kann man den irgendwie "löschen"?


Moritz
 
Zuletzt bearbeitet:

BRoll

Bekanntes Mitglied
Sry für den Doppelpost:

Habe das jetzt mit dem Screen und dem .getGraphics() probiert, kriege aber immer eine NullPointerException ... warum? Habe ein "leeres" BufferedImage erstellt, kann es daran liegen?

EDIT:
Außerdem habe ich irgendwie einen Abstand von 10px von links und von oben .. wodran kann das liegen, wenn ich nämlich ein Objekt erzeuge wird es bei x=0 und y=0 in echt bei x=10 und y=10 gezeichnet .. hat das JPANEL einen Abstand, und kann man den irgendwie "löschen"?


Moritz

Bitte mal den ganzen Code posten, dann kann ich dir sagen was nicht stimmt.
Kann viele Gründe haben, hast du das BufferedImage initialisiert?
Stimmt die Reihenfolge? usw...

Zu JPanel kann ich nicht sagen ob das einen eingebauten Abstand hat,
hab damit noch nicht gearbeitet.
Vielleicht weiß das jemand anderes. ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Libgdx - Wiedergabe von Bildschirmgröße ist falsch Spiele- und Multimedia-Programmierung 0
dummycoders Android Studio - Button ändert Farbe erst nach Delay? Spiele- und Multimedia-Programmierung 5
A MouseListener ändert nicht das Lable Icon. Spiele- und Multimedia-Programmierung 2
Dragonfire Java Sound API - Lautstärke ändert sich nicht Spiele- und Multimedia-Programmierung 2
H Jogl-Animator - Inhalt ändert sich nicht Spiele- und Multimedia-Programmierung 4
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
R Memory - Nicht alle Button lassen sich aktivieren? Spiele- und Multimedia-Programmierung 1
P Sich bewegende Kamera Spiele- und Multimedia-Programmierung 12
I Wo befindet sich ein Punkt? Spiele- und Multimedia-Programmierung 6
N der Player bewegt sich nicht Spiele- und Multimedia-Programmierung 14
R Game Loop verhält sich eigenartig Spiele- und Multimedia-Programmierung 1
A Spielball bewegt sich nicht richtig, prallt falsch ab Spiele- und Multimedia-Programmierung 7
Blender3D VLCJ Video lässt sich nicht mehr abspielen nach mysql Installation Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
S Animation zieht "Spur" hinter sich her Spiele- und Multimedia-Programmierung 2
M Würdet ihr sagen Java Applets eignen sich gut Spiele- und Multimedia-Programmierung 5
J Java3D - Farben vermischen sich Spiele- und Multimedia-Programmierung 7
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
CookieSoft 3D Würfel will sich nicht drehen! [LWJGL] Spiele- und Multimedia-Programmierung 2
M Beim schießen richtet sich die Kugel nach der Maus aus (Quaternion) Spiele- und Multimedia-Programmierung 5
J Pufferproblem bei sich wiederholenden MouseEvents Spiele- und Multimedia-Programmierung 4
T JOGL im OrthoMode und Texturen verfärben sich Spiele- und Multimedia-Programmierung 3
S Programm hängt sich auf wenn Lied abspielt Spiele- und Multimedia-Programmierung 4
W 2 Bälle, die sich abstoßen Spiele- und Multimedia-Programmierung 24
F RPG - Spielfigur soll sich nicht frei bewegen können. Anregugen wären gerne gesehen^^ Spiele- und Multimedia-Programmierung 13
Ivan Dolvich [LWJGL] Texturen überlagern sich Spiele- und Multimedia-Programmierung 2
P JFileChooser öffnet sich drei mal Spiele- und Multimedia-Programmierung 4
M Sich nach links verschiebendes Bild Spiele- und Multimedia-Programmierung 2
L Figur soll sich selbständig Bewegen Spiele- und Multimedia-Programmierung 12
S Polygon bewegt sich nach mehreren aufrufen immer schneller Spiele- und Multimedia-Programmierung 3
B Bounds drehen sich nicht mit.... Spiele- und Multimedia-Programmierung 7
R Eignet sich Java für ein Beat'em'Up? Spiele- und Multimedia-Programmierung 3
R Kreuz lässt sich nicht zeichnen Spiele- und Multimedia-Programmierung 11

Ähnliche Java Themen

Neue Themen


Oben