Pygame改变图像颜色,但保持透明度



我有一个函数,它可以拍摄图像并按给定的量调整所有RGB值:

def colour(self,img,col):
img = self.my_image.copy()
col = (col[0],col[1],col[2],0)
img.fill(col, None, pygame.BLEND_RGBA_ADD)
return img

我想将此应用于部分透明的图像。但是当我把这个应用到图像上时,透明的像素就会变成彩色的。我希望这些像素保持透明,但任何不透明的像素都要像正常一样着色。有没有什么方法可以做到这一点,而不必在调整之前遍历每个像素并检查每个像素是否透明?感谢

fill将颜色视为纯色。你必须使用blit。创建一个与源图像大小相同的透明图像,并用颜色填充。最后,混合两个图像:

def colour(self, img, col):
img = self.my_image.copy()
color_img = pygame.Surface(img.get_size(), pygame.SRCALPHA)
color_img.fill((col[0], col[1], col[2], 0))
img.blit(color_img, (0, 0), special_flags = pygame.BLEND_RGBA_ADD)
return img

另请参阅是否可以在Pygame中更改精灵颜色?

最新更新