Pygame - 我如何改变图像的颜色但改变它的颜色?

Pygame - How do I blit an image but change its color?

我有一个随机标志生成器程序。我为旗帜制作了一个白色 "background",以及不同的白色符号等。它们是白色的原因是我可以使用 RGB 值给它上色。问题是,我不确定该怎么做(如果可能的话),那么是否可以 blit 图像并在 pygame 中给它一个 RGB 值? 例如(这可能是不正确的,但最后 2 个 blits 中的第二个元组表示 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))

您可以使用 pygame.Surface.fill 方法用纯色填充表面,例如:

background.fill((0, 100, 200))

上面的线条将填充整个图像,甚至是透明像素。

您还可以传递 special_flags 参数以使用不同的 :

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

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


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