我想在画面中间画出背景图像。由于我的图像没有窗户那么大,我想放一个黑色的背景。
以下是我使用的代码:
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,我的框架只是黑色,不显示图像。
所以这是我的问题,如何显示我的图像并具有背景?
答案 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);
这很有效。