gpt4 book ai didi

java - 如何让重叠的形状产生新的颜色?

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:03 24 4
gpt4 key购买 nike

我正在制作一款游戏,其中红色和蓝色的形状会在屏幕上移动。我仔细研究了如何使它们重叠的任何地方都变成不同的颜色(紫色)。我只使用 Java2D,据我了解,它不支持着色器。我考虑将红色形状绘制到一个 BufferedImage 上,将蓝色形状绘制到另一个上,然后尝试使用 AlphaComposite 组合颜色并将其绘制到屏幕上,但它从未产生正确的结果。我使用 127,0,0 和 0,0,127 来表示红色和蓝色,而不是 255,因为在我看来,255,0,255 对于紫色来说看起来很糟糕。我实际上想 this .

最佳答案

多亏了copeg的建议,我才得以弄清楚。这是代码段(上下文:我正在绘制的形状是攻击):

    //Attacks
BufferedImage attackImg = new BufferedImage(S_WIDTH, S_HEIGHT, BufferedImage.TYPE_INT_ARGB);
Graphics2D ag = (Graphics2D) attackImg.getGraphics();
//Make all of attackImg a transparent image
ag.setComposite(AlphaComposite.Clear);
ag.fillRect(0, 0, S_WIDTH, S_HEIGHT);
ag.setComposite(AlphaComposite.SrcOver);

//Render red attacks to attackImg
ag.setColor(new Color(127, 0, 0, 255));
for(Shape s : redAttacks)
ag.fill(s);

//Render overlap areas using composites to attackImg
ag.setColor(new Color(127, 0, 127, 255));
ag.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN));
g.setColor(new Color(0, 0, 127, 255));
for(Shape s : blueAttacks)
{
ag.fill(s);
g.fill(s); //Render blue attacks
}
//Render red and purple attacks
g.drawImage(attackImg, 0, 0, null);

关于java - 如何让重叠的形状产生新的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39281555/

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