我能够使用以下代码行更改BufferedImage的alpha值:

g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, rail0FlashList.get(fl)));


这里的问题是,此行之后的所有其他组件也都受到了影响。有没有一种方法可以更改单个选定的BufferedImage的alpha值?

最佳答案

我在这里有点猜测,但是...

Graphics2D ga = (Graphics2D)g2.create();
ga.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, rail0FlashList.get(fl)));
// Use ga to render what ever needs to be painted with the alpha composite
ga.dispose();


基本上,它会创建Graphics状态的快照,允许您对其进行修改,而不会影响原始上下文的状态。在处理转换时也非常有用

09-28 02:26