Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Draw背景问题 我想在框架的中间画我的背景图像。由于我的图像没有窗口大,我想放一个黑色背景_Java_Background_Paint - Fatal编程技术网

Java-Draw背景问题 我想在框架的中间画我的背景图像。由于我的图像没有窗口大,我想放一个黑色背景

Java-Draw背景问题 我想在框架的中间画我的背景图像。由于我的图像没有窗口大,我想放一个黑色背景,java,background,paint,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

以下是我使用的代码:

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);
    }
}
如果将帧设置为不透明,则显示图像,但背景为灰色。 如果我将“不透明”设置为false,则我的帧仅为黑色,不显示任何图像


因此,我的问题是,如何显示图像并具有背景?

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

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

如果在JPanel子对象中这样做,请调用
setBackground(Color.black)并在
paintComponent
中实现代码,首先调用
super.paintComponent(g)用于黑色背景。

如果您在JPanel儿童中执行此操作,请调用
setBackground(Color.black)并在
paintComponent
中实现代码,首先调用
super.paintComponent(g)

我找到了一个小技巧来解决它:

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

这很有效。

我找到了一个小技巧来解决它:

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

这很好。

我尝试将挫折置于drawImage之前,但结果与之前相同。我尝试将挫折置于drawImage之前,但结果与之前相同