Java - 绘制背景问题

时间:2012-04-19 13:15:38

标签: java background paint

我想在画面中间画出背景图像。由于我的图像没有窗户那么大,我想放一个黑色的背景。

以下是我使用的代码:

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);
    }
}

如果我将框架设置为opaqe,则会显示我的图像,但背景为灰色。 如果我将opaque设置为false,我的框架只是黑色,不显示图像。

所以这是我的问题,如何显示我的图像并具有背景?

3 个答案:

答案 0 :(得分:3)

如果您是在JPanel孩子中执行此操作,请在构造函数中调用setBackground(Color.black);,并在paintComponent中实现代码,首先为黑色背景调用super.paintComponent(g);

答案 1 :(得分:1)

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

答案 2 :(得分: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);

这很有效。