java中背景透明的清晰图像

java中背景透明的清晰图像,java,graphics2d,Java,Graphics2d,我用paintComponentGraphics g方法绘制图像,以使其与视网膜显示器兼容 g.drawImage(image, 0, 0, imageWidth/2, imageHeight/2, null); 除了图像的阴影相互叠加外,其他一切都可以完美地工作。这使这幅画很难看。 所以,我需要在绘制新的图像之前清除图像。问题来了: 清除图像时我没有遇到任何问题,但问题是防止父元素的背景重叠。现在看来是这样 我使用了其他主题的方法: g2d.setBackground(new Color(2

我用paintComponentGraphics g方法绘制图像,以使其与视网膜显示器兼容

g.drawImage(image, 0, 0, imageWidth/2, imageHeight/2, null);
除了图像的阴影相互叠加外,其他一切都可以完美地工作。这使这幅画很难看。 所以,我需要在绘制新的图像之前清除图像。问题来了:

清除图像时我没有遇到任何问题,但问题是防止父元素的背景重叠。现在看来是这样

我使用了其他主题的方法:

g2d.setBackground(new Color(255,255,255,0));
g2d.clearRect(0, 0, ICON_WIDTH, ICON_HEIGHT);
以及

g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR));
g2d.setBackground(new Color(255,255,255,0));
g2d.clearRect(0, 0, ICON_WIDTH, ICON_HEIGHT);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
还有其他几个

应该是这样的 这就是多次调用repaint方法后的情况。我需要调用它来将图像从一个更改为另一个

我的组件方法:

Image image;
if (flag) {
    image = image1;
} else {
    image = image2;
}

g2d.drawImage(image, 0, 0, IMAGE_SIZE, IMAGE_SIZE, null);

在写这个问题时,我意外地找到了答案。 给我打电话

        super.paintComponent(g);
在paintcomponent方法的开始,它就是解决方案。因为它清除了里面的图像

super.paintcomponent中清除图像的代码如下:

g.setColor(c.getBackground());
g.fillRect(0, 0, c.getWidth(),c.getHeight());

如果我用它代替super.paintComponent,它也可以工作。在填充矩形之前,我不需要设置自己的颜色。

在写这个问题时,我意外地找到了答案。 给我打电话

        super.paintComponent(g);
在paintcomponent方法的开始,它就是解决方案。因为它清除了里面的图像

super.paintcomponent中清除图像的代码如下:

g.setColor(c.getBackground());
g.fillRect(0, 0, c.getWidth(),c.getHeight());

如果我用它代替super.paintComponent,它也可以工作。在填充矩形之前,我不需要设置自己的颜色。

因为你不能为wright回答而自我陶醉,我会为你做的!:因为你不能为赖特吐露心声,所以我会为你吐露心声的