我正试图改变图像的透明度,我正在使用drawImage()
中的java.awt.Graphics
方法进行此操作。我知道网上有很多关于如何做到这一点的不同答案,但我找不到一个足以让我理解和实施的答案。
我们只想说我有BufferedImage
图像,我想以50%的不透明度绘制此图像。我如何初始化image
以及在绘制图像时如何调整图像的alpha级别。如果我可以使用方法drawImage()
并使用方法来改变图像的透明度,那将是很好的,但它可能不那么简单。
答案 0 :(得分:7)
从未尝试过,但我认为基本代码是:
AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
g2d.setComposite(ac);
g2d.drawImage(...);
答案 1 :(得分:1)
使用图像过滤器。
float[] scales = { 1f, 1f, 1f, 0.1f };
float[] offsets = new float[4];
RescaleOp rop = new RescaleOp(scales, offsets, null);
g2d.drawImage(buffimg, rop, 0, 0);
scale数组中的第4个元素是透明度,此值介于0 - 1
之间通过camickr的回答将使整个组件应用包括所有内部组件的alpha。但那会更快。
警告:小心使用图像过滤器
参考:http://www.informit.com/articles/article.aspx?p=1013851&seqNum=2