Java SE-1.6 で透明なフレームに読み込んだ画像を表示したいのですが、 フレームに背景色を指定するとGraphics2D の drawImage() で描画できません。 あるいはBufferStrategyが機能していないのかもしれません。 ・フレーム this.frame = new JFrame("Sample"); this.frame.setSize(width, height); this.frame.setUndecorated(true); this.frame.setBackground(new Color(0,0,0,0)); this.frame.setVisible(true); this.frame.setIgnoreRepaint(true); this.frame.createBufferStrategy(2); this.strategy = this.frame.getBufferStrategy(); ・画像読み込み try { this.star = ImageIO.read(new File("star.png")); } catch (Exception e) { e.printStackTrace(); } ・タイマーで周期的に呼ばれる描画部分 void render() { Graphics2D g = (Graphics2D)this.strategy.getDrawGraphics(); g.setBackground(new Color(0,0,0,0)); g.clearRect(0, 0,this.frame.getWidth(), this.frame.getHeight()); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g.drawImage(this.star, 200, 100, null); g.dispose(); this.strategy.show(); } フレーム部分の「this.frame.setBackground(new Color(0,0,0,0));」を記述しなければ画像は表示されますが、背景は初期の黒いフレームです。 render() が呼ばれていることは確認できていて、g.drawImageはtrueを返しています。 画像はアニメーションさせることを想定しているのでダブルバッファリングを使っています。 PNG画像は透明な背景に星形の記号が描かれたもので、最終的にはタイトルバーもない透明なウィンドウに星の画像だけが表示されている状態を作りたいのですがどのようにすればいいのでしょうか?
↧