0

フレームの真ん中に背景画像を描きたいです。私の画像はウィンドウほど大きくないので、背景を黒にしたいと思います。

私が使用するコードは次のとおりです。

public void paint(Graphics g)
{
    if(this.background != null)
    {
        int bounds_top = getHeight() / 2;
        int bounds_left = getWidth() / 2;
        int half_height = this.background.getHeight(null) / 2;
        int half_width = this.background.getWidth(null) / 2;
        g.drawImage(this.background, bounds_left - half_width, bounds_top - half_height, this.background.getWidth(null), this.background.getHeight(null), this);

        this.setBackground(Color.black);
        //this.setOpaque(false);
    }
}

フレームを不透明に設定すると、画像は表示されますが、背景がグレーになります。opaque を false に設定すると、フレームはただの黒になり、画像は表示されません。

ここに私の質問があります。どうすれば自分の画像を表示し、背景を背景にすることができますか?

4

3 に答える 3

0

私はそれを解決するためのちょっとしたトリックを見つけました:

Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.BLACK);
g2.fill(new Rectangle2D.Double(0, 0, getWidth(), getHeight()));
g.drawImage(this.background, bounds_left - half_width, bounds_top - half_height, this.background.getWidth(null), this.background.getHeight(null), this);

これはうまくいきます。

于 2012-04-19T14:07:43.180 に答える