我正在尝试随着时间的推移更改图像的透明度,我正在drawImage()
使用java.awt.Graphics
. 我知道网上有很多关于如何做到这一点的不同答案,但我找不到一个简单到足以让我理解和实施的答案。
假设我有一张BufferedImage
图片,我想用 50% 的不透明度绘制这张图片。我将如何初始化image
以及在绘制图像时如何调整图像的 alpha 级别。如果我可以使用该方法drawImage()
并用它来改变图像的透明度,那就太好了,但它可能没那么简单。
我正在尝试随着时间的推移更改图像的透明度,我正在drawImage()
使用java.awt.Graphics
. 我知道网上有很多关于如何做到这一点的不同答案,但我找不到一个简单到足以让我理解和实施的答案。
假设我有一张BufferedImage
图片,我想用 50% 的不透明度绘制这张图片。我将如何初始化image
以及在绘制图像时如何调整图像的 alpha 级别。如果我可以使用该方法drawImage()
并用它来改变图像的透明度,那就太好了,但它可能没那么简单。
从未尝试过,但我认为基本代码是:
AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
g2d.setComposite(ac);
g2d.drawImage(...);
使用图像过滤器。
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);
scales 数组中的第 4 个元素是透明度,该值介于 0 - 1 之间
camickr 的回答将使整个组件应用 alpha,包括所有内部组件。但这会快得多。
警告:小心使用图像过滤器
参考:http ://www.informit.com/articles/article.aspx?p=1013851&seqNum=2