Pygame - 如何将图像blit但更改其颜色?

3
我有一个随机旗帜生成器程序。我为旗帜制作了一个白色的“背景”,还有不同的符号等,它们都是白色的。它们是白色的原因是我可以使用RGB值对其进行着色。问题是,我不确定如何做到这一点(如果可能的话),那么在pygame中是否可以将图像剪切并赋予一个RGB值呢? 例如(最后2个blits中的第2个元组表示RGB):
surface=pygame.display.set_mode((100,200))
background=pygame.image.load("Background.png")
flagback=pygame.image.load("back.png")
symbol=pygame.image.load("symbol.png")
surface.blit(background,(0,0))
surface.blit(flagback,(0,0),(100,0,0))
surface.blit(symbol,(0,0),(0,100,0))
1个回答

2
您可以使用pygame.Surface.fill方法来填充一个表面,例如使用纯色:
background.fill((0, 100, 200))

即使是透明像素,上面的行也会填充整个图像。

您还可以传递special_flags参数来使用不同的混合模式

background.fill((0, 100, 200), special_flags=pygame.BLEND_MULT)

这个不会影响完全透明的像素。


如果你只想绘制一些形状,比如矩形、圆形或多边形,请使用 pygame.draw(或 pygame.gfxdraw) 模块中的函数。


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