在Pygame中对图像进行着色

6

我正在寻找如何在Pygame中以类似Monogame的方式给图像着色。我一直在尝试让自定义标志(如BLEND_ADD)起作用,但很难找到我要找的简明示例,大多数人只是在尝试“变暗”或以某种方式处理alpha级别。

问题: 如何以与MonoGame相同的方式将图像着色为特定的RGBA值?


1
我不确定这种开放式问题是否适合于 Stack Overflow。添加一张图片,以便我们可以看到这个“Monogame”的作用,可能会有所帮助。 - Jongware
哦,抱歉,我没想到那是我需要解释的事情。Monogame是一个用于创建游戏的C#库。类似于Pygame是Python中的一个模块。至少这就是我理解的方式。在这方面,我不认为这是一个开放性问题,因为它有一个spritebatch.draw方法来处理绘制事物,它有一个参数通过一个颜色传递,它会对其进行着色(默认值为(0, 0, 0),这意味着它什么也不做)。 - Quaz
它是一个开源库吗? - Jongware
是的,您可以在https://github.com/MonoGame/MonoGame/blob/develop/MonoGame.Framework/Graphics/SpriteBatch.cs中查看。 如果您查看第591行的方法。我实际上不理解颜色方面发生了什么或者它如何进行着色处理,这就是我要问的。 - Quaz
1个回答

8

将图像填充为一种颜色,并将 BLEND 常量之一作为special_flags参数传递,例如your_image.fill((190,0,0,100), special_flags = pygame.BLEND_ADD)

请注意, BLEND_RGB_ADD 只是 BLEND_ADD 的别名(其他模式同样适用)。 RGBA模式还会修改Alpha通道(ADD和MAX使透明部分可见)。

下面是一个表格,显示了不同混合模式的效果(我还添加了在Photoshop中的名称):

enter image description here


1
正是我所需要的,尽管这并不能完全复制Monogame的行为,但它帮助我解决了问题。谢谢。 - Quaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接