# Spiel als Vollbild starten mit Image als HIntergrund



## Tom2005 (2. Okt 2005)

Hallo,

ich würde gerne folgendes wissen :

Ich möchte mal raus aus den Spielen die in einem Fenster laufen und das Spiel ( wie bei den großen halt ) als Vollbild starten ( wie es bei allen kommerziellen spielen eben ist ), mit einem Hintergrundbild.
Ich weiss aber nicht wie man diese Technik nennt bzw, wie man sowas machen kann.

Daher suche ich nun eure Hilfe !


----------



## Tom2005 (2. Okt 2005)

Hab schon was schönes hier gefunden, setFullScreenWindow nennt sich das.


----------



## 0xdeadbeef (2. Okt 2005)

Habe mal das hier benutzt (vereinfachte Version):


```
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice gs = ge.getDefaultScreenDevice();
    BufferStrategy strategy;
        
    if (gs.isFullScreenSupported()) {
        this.setUndecorated(true);
        this.setVisible(true);
        this.setSize(view_width, view_height);
        gs.setFullScreenWindow(this);
        try {
            gs.setDisplayMode(new DisplayMode(view_width, view_height, 32, gs.getDisplayMode().getRefreshRate())) ;
            this.createBufferStrategy(2);
            strategy = this.getBufferStrategy();
        } catch (Exception ex) {
            gs.setFullScreenWindow(null);
        }
    }
```

Man muß sich natürlich übrlegen, was man macht, wenn isFullScreenSupported() false zurückliefert oder wenn setDisplayMode scheitert usw. Optimalerweise sollte man beide Möglichkeiten vorsehen: Vollbild und Fenstermodus.

Nebenbei: im obigen Beispiel besorge ich mir auch gleich noch eine BufferStrategy, um später DoubleBuffering zu bekommen. Im Vollbildmodus kann man dann (falls das System es unterstützt per Pageflipping schnell zwischen zwei Zeichenpuffern umschalten:

```
g =  strategy.getDrawGraphics();
...
g.drawImage(...);
...
strategy.show();
```


----------



## Tom2005 (2. Okt 2005)

Das ist perfekt, danke dir !


----------



## Guest (6. Okt 2005)

Wie wärs denn sonst damit????
Einfach die jeweilige Auflösung abfragen und eine abgeleitete WindowKlasse starten die sich so groß zeichnet wie die Auflösung eben ist.


----------



## Memphis (9. Okt 2005)

Das könnte ich dir anbieten funktioniert auch sehr schön

GraphicsDevice device;
device=GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0];
device.setFullScreenWindow(this);
device.setDisplayMode(new DisplayMode(1024,768,32,60));


----------



## maxf (30. Nov 2005)

www.soulflyhome.com/index.htm
Dann "Tutorials, Fullscreen bei Javaprogrmen".


----------



## LoN_Nemesis (10. Mai 2006)

maxf hat gesagt.:
			
		

> www.soulflyhome.com/index.htm
> Dann "Tutorials, Fullscreen bei Javaprogrmen".



Ich habe die Klasse dort runtergeladen und möchte sie nun verwenden, da sie kompakt und gut ist.

Nun habe ich aber folgendes Problem: Wenn ich in meiner Render Methode Java Methoden nutze um irgendwelche Formen (Kreise, Linien, Rechtecke, etc.) zu zeichen, dann klappt alles wunderbar.

Jedoch gelingt es mir nicht, eigene Bilder anzuzeigen. Es gibt keine Fehlermeldung, das Grafikfile existiert auch und ist im gleichen Verzeichnis (habe es auch schon mit kompletter Pfadangabe beim Laden versucht).

Doch das Bild erscheint einfach nicht wenn ich das Programm starte. Woran könnte das liegen? Hier der Code


```
public class VV_main extends Frame implements KeyListener
{
	Fullscreen screen;
	Image test;
	Toolkit tk;
	
	public VV_main()
	{
		screen = new Fullscreen();
		screen.setDisplayMode(800,600,32,60);
		screen.setFullscreen();
		screen.getFullscreenFrame().addKeyListener(this);
		tk = Toolkit.getDefaultToolkit();
		test = tk.getImage("vampire.gif");
				
		render();
	}
	
	public void render()
	{
		Graphics g = screen.getGraphics();
		
		g.setColor(Color.RED);
		//g.fillRect(x,y,400,400);
		screen.redraw();
		g.drawImage(test, 200, 200, null);
	}
```


----------



## trmx (15. Mai 2006)

So wie ich das sehe gehören die letzten zwei Zeilen in der render() Methode umgedreht.
Also zuerst malen und dann screen.redraw();


```
public void render() 
   { 
      Graphics g = screen.getGraphics(); 
       
      g.setColor(Color.RED); 
      //g.fillRect(x,y,400,400); 
      g.drawImage(test, 200, 200, null); 
      screen.redraw(); 
   }
```


----------

