2

我正在尝试随着时间的推移更改图像的透明度,我正在drawImage()使用java.awt.Graphics. 我知道网上有很多关于如何做到这一点的不同答案,但我找不到一个简单到足以让我理解和实施的答案。

假设我有一张BufferedImage图片,我想用 50% 的不透明度绘制这张图片。我将如何初始化image以及在绘制图像时如何调整图像的 alpha 级别。如果我可以使用该方法drawImage()并用它来改变图像的透明度,那就太好了,但它可能没那么简单。

4

2 回答 2

8

从未尝试过,但我认为基本代码是:

AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
g2d.setComposite(ac);
g2d.drawImage(...);
于 2013-04-14T02:30:28.750 回答
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);

scales 数组中的第 4 个元素是透明度,该值介于 0 - 1 之间

camickr 的回答将使整个组件应用 alpha,包括所有内部组件。但这会快得多。

警告:小心使用图像过滤器

参考:http ://www.informit.com/articles/article.aspx?p=1013851&seqNum=2

于 2013-05-29T20:16:33.853 回答