gpt4 book ai didi

java - 一个 BufferedImage 上的多个渐变

转载 作者:行者123 更新时间:2023-11-30 04:36:15 24 4
gpt4 key购买 nike

我正在使用 RadialGradientPaint 创建一个 cricle 渐变,将其放在 BufferedImage 上并将图像渲染在我的 2d 游戏屏幕顶部,创建一个漂亮的黑暗中的光效果。然而,我想创建更多的光源,但为每个灯创建和渲染一个新的 BufferedImage 并不能完成这项工作(通常只看到最后一个灯,其他一切都是黑色的)。是否可以将一些 RadialGradientPaints 烘焙到一个 BufferedImage 中或以其他方式实现多个灯光效果?

在附件中您可以找到一盏灯的外观图像。它是一个黑色的 BufferedImage,并在屏幕顶​​部应用了 RadialGradientPaint 渲染。我想以某种方式添加更多这些内容。

Single light

最佳答案

这个问题的解决方案是使用这个(正如@JanDvorak的评论所指出的:Merging two images

我使用的确切代码是这样的:

public static BufferedImage mergeImages2(BufferedImage base, Collection<Light> images) {
BufferedImage output = new BufferedImage(base.getWidth(), base.getHeight(), BufferedImage.TYPE_INT_ARGB);

Graphics2D g = output.createGraphics();
g.drawImage(base, 0, 0, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1.0f));
for (Light l : images) {
g.drawImage(l.LIGHT_IMAGE, l.x, l.y, null);
l.LIGHT_IMAGE.flush();
}
g.dispose();
output.flush();
return output;
}

注意:这解决了问题,但会产生内存泄漏,我已经描述过,希望在这里寻求一些帮助:BufferedImage.createGraphics() memory leak

关于java - 一个 BufferedImage 上的多个渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13440668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com