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

3

如果您在 JPanel 子项中执行此操作,请调用setBackground(Color.black);构造函数,并在paintComponent第一次调用super.paintComponent(g);黑色背景时实现代码。

于 2012-04-19T13:26:47.403 回答
1

您正在将图像绘制到背景,然后将背景颜色设置为黑色。尝试先将背景颜色设置为黑色,然后将图像绘制到它。否则,看起来您在图像上绘制黑色。

于 2012-04-19T13:23:11.107 回答
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 回答