Ich schreibe ein River-Raid-Like-Spiel, und alle Bilder werden mit g.drawImage (...) gezeichnet. Meine Frage ist: Wie kann ich das Seitenverhältnis des Inhalts beibehalten und den Inhalt an die neue Fenstergröße anpassen, wenn jemand die Größe des JFrame ändert?Größe ändern Bilder ohne JLabel
Gibt es eine Option wie diese? Kann ich dies tun, ohne JLabels und Layouts zu verwenden? Wenn nicht, wie geht das anders?
private void initBoard() {
addKeyListener(new TAdapter());
setFocusable(true);
setBackground(Color.WHITE);
setLayout(new GridBagLayout());
craft = new Craft(ICRAFT_X, ICRAFT_Y);
mapa = new Mapa();
setMinimumSize(new Dimension(WIDTH, HEIGHT));
initEnemiesAndAddThem();
czas = new Timer(delay, this);
czas.start();
}
JFrame Konstruktor:
Mein Code Dinge auf dem JPanel
private void doDrawing(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
drawStrings(g2);
mapa.drawMap(g2);
ArrayList ms = craft.getMissiles();
for (Object m1 : ms) {
Missile m = (Missile) m1;
g2.drawImage(m.getImage(), m.getX(), m.getY(), this);
}
g2.drawImage(craft.getImage(), craft.getX(), craft.getY(), this);
for (EnemyJet enemy : enemies) {
g2.drawImage(enemy.getImage(), enemy.getX(), enemy.getY(), this);
}
for (Fuel fuel : fuels) {
g2.drawImage(fuel.getImage(), fuel.getX(), fuel.getY(), fuel.getHeight(), fuel.getHeight(), this);
}
for (Obstacle o : obst) {
g2.drawImage(o.getImage(), o.getX(), o.getY(), this);
}
drawStrings(g2);
}
Auch JPanel Konstruktor zu zeichnen
private void initGame()
{
add(new Plansza());
setTitle("Reeevah Raaid");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(WIDTH, HEIGHT);
setPreferredSize(new Dimension(WIDTH, HEIGHT));
setLocationRelativeTo(null);
pack();
setVisible(true);
//setExtendedState(JFrame.MAXIMIZED_BOTH);
//setResizable(false);
}
Sorry zu sagen, aber es funktioniert nicht, da die Skalierung sehr, sehr groß oder zu klein sein kann, da nur ein Hintergrund sichtbar ist, aber der Schnittpunkt zeigt, dass sie irgendwo sichtbar sind (die Bilder). Ich mag diesen Ansatz, weil es für alle Bilder in Do-Zeichnung funktioniert, aber schließlich ist etwas mit der Skala falsch – tdbr
EDIT: Nach einigen Recherchen, Intersticion tritt auf, aber keine Bilder sind sichtbar ... Ich müde, die Skala um 0,5 oder 2 zu multiplizieren wenn es Bilder zu klein oder zu groß macht, kann ich sie nicht sehen, aber sie sind unsichtbar ... – tdbr