java中背景透明的清晰图像
我用paintComponentGraphics g方法绘制图像,以使其与视网膜显示器兼容java中背景透明的清晰图像,java,graphics2d,Java,Graphics2d,我用paintComponentGraphics g方法绘制图像,以使其与视网膜显示器兼容 g.drawImage(image, 0, 0, imageWidth/2, imageHeight/2, null); 除了图像的阴影相互叠加外,其他一切都可以完美地工作。这使这幅画很难看。 所以,我需要在绘制新的图像之前清除图像。问题来了: 清除图像时我没有遇到任何问题,但问题是防止父元素的背景重叠。现在看来是这样 我使用了其他主题的方法: g2d.setBackground(new Color(2
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回答而自我陶醉,我会为你做的!:因为你不能为赖特吐露心声,所以我会为你吐露心声的