hm....: Hintergrund transparent machen

Hi Leute,

ich möchte das ein Bild auf meinem Desktop hin und her springt.

Dafür habe ich die Bibliothek Slick in mein Java Projekt eingebunden und diesen Code gefunden:

  
import org.newdawn.slick.*;  
  
public class HelloWorld extends BasicGame {  
	private Image image;  
  
	public HelloWorld() {  
		// Setzen des Fenstertitels  
		super("Hello World");  
	}  
  
	public static void main(String[] args) throws SlickException {  
		AppGameContainer container = new AppGameContainer(new HelloWorld());  
		// Fenster mit 1024 x 786 im Fenstermodus (false)  
		  
		//container.setFullscreen(true);  
		container.setDisplayMode(700,700,false);//1024, 768,false);  
		  
		container.start();  
	}  
  
	@Override  
	public void init(GameContainer container) throws SlickException {  
		// Bild logo.png aus dem Verzeichnis restest laden  
		image = new Image(pfad zum png);  
	}  
  
	@Override  
	public void render(GameContainer container, Graphics g)  
			throws SlickException {  
		// Text und Bild zeichnen  
		g.drawString("Hello World", 100, 100);  
		g.drawImage(image, 300, 300);  
		//Color color = new Color(Color.transparent );  
		g.setBackground(Color.transparent);  
	}  
  
	@Override  
	public void update(GameContainer container, int delta)  
			throws SlickException {  
		// Animation: Bild rotieren  
		image.rotate(0.05f);  
		// Tastenabfrage: Mit Esc-Taste das Spiel beenden  
		if (container.getInput().isKeyPressed(Input.KEY_ESCAPE)) {  
			container.exit();  
		}  
	}  
}  
  

jetzt möchte ich den schwarzen hintergrund verschwinden lassen, so dass nur das bild zu sehen ist. mit g.setBackground(Color.transparent) kriege ich das nicht hin. kennt jemand von euch eine passende möglichkeit? dieser schwarze hintergrund scheint vom container zu kommen.

  1. Ohne große Ahnung von Java zu haben:

      g.setBackground(Color.transparent);  
    

    Das *nach* den sonstigen Zeichenoperationen aufzurufen erscheint mir unsinnig.

    jetzt möchte ich den schwarzen hintergrund verschwinden lassen, so dass nur das bild zu sehen ist.

    Jeder Teil des Bildschirms muss eine Farbe haben. Was sollte da erscheinen wo jetzt schwarz zu sehen ist?

    1. hi,

      danke für die antwort.

      Ohne große Ahnung von Java zu haben:

        g.setBackground(Color.transparent);  
      

      Das *nach* den sonstigen Zeichenoperationen aufzurufen erscheint mir unsinnig.

      davor funktioniert leider auch nicht, allerdings würde Color.blue funktionieren, sowohl davor als auch danach

      jetzt möchte ich den schwarzen hintergrund verschwinden lassen, so dass nur das bild zu sehen ist.
      Jeder Teil des Bildschirms muss eine Farbe haben. Was sollte da erscheinen wo jetzt schwarz zu sehen ist?

      durchsichtig wäre mein ziel. also, dass nur das bild zu sehen ist, wie es sich auf dem desktop bewegt ohne das man dieses viereckige fenster sieht.

      eventuell gibt es eine ganz andere strategie dafür?

      ich würde gerne verstehen wie man soetwas programmieren kann:

      http://desktop-katze.giga.de/

      dafür konnte ich bislang noch keine strategie finden und anscheind auch keinen guten ansatz. geht das eventuell besser mit C++?

      --
      Wenn 1 + 1 = 0 => 0 = 2, da: 2 = 1 + 1 = 0 = 1 + 1 = 2 .... ich glaube ich studiere nur Mist :)
      1. Das Problem düfte sein, ein Fenster zeichnet sich deckend über den Desktop bzw. über andere Fenster. Es hilft daher nichts den Hintergrund transparent zu schalten, der Bildpuffer des Fensters hat immer eine Farbe (anfangs wahrscheinlich schwarz) und wenn du auf sowas "nichts" (= transparent) drüberzeichnest, bleibt das trotzdem schwarz.
        Es gibt Einstellungen um das Zeichnen des Hintergrunds komplett zu verhindern, aber wie das in Java funktioniert weiß ich nicht.

        1. Om nah hoo pez nyeetz, Encoder!

          Das Problem düfte sein, ein Fenster zeichnet sich deckend über den Desktop bzw. über andere Fenster. Es hilft daher nichts den Hintergrund transparent zu schalten, der Bildpuffer des Fensters hat immer eine Farbe (anfangs wahrscheinlich schwarz) und wenn du auf sowas "nichts" (= transparent) drüberzeichnest, bleibt das trotzdem schwarz.

          "Weil, wenn man den String-Tange durch Luft abdeckt, immer noch ein String-Tanga zu sehen ist." [Beat]

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Enter und Enterich.

  2. Hi,

    ich möchte das ein Bild auf meinem Desktop hin und her springt.

    Dafür habe ich die Bibliothek Slick in mein Java Projekt eingebunden und diesen Code gefunden:

    public class HelloWorld extends BasicGame {

      
    kenn ich nicht. Wovon ist das abgeleitet? java.awt.Frame?  
      
    javax.swing.JFrame bzw. dessen Basis java.awt.Frame unterstützt die Methode setShape, um nicht-rechteckige Fenster zu erzeugen.  
      
    Als Parameter wird ein Shape erwartet (Shape ist ein Interface, für das es bereits viele Implementationen gibt - aber notfalls kannst Du selbst eine Klasse bauen, die das Shape-Interface implementiert, und die die passende Fenster-Form erzeugt.  
      
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.