如何在pygame中制作半透明的精灵

我刚刚开始使用pygame,我正在尝试制作一个半透明的精灵,精灵的源文件是从磁盘加载的非透明位图文件.如果我可以提供帮助,我不想编辑源图像.我确信有一种方法可以使用pygame代码来实现这一点,但谷歌对我毫无帮助.

解决方法:

加载图像后,您需要在Surface上启用Alpha通道.看起来有点像这样:

background = pygame.Display.set_mode()
myimage = pygame.image.load("path/to/image.bmp").convert_alpha(background)

这将加载图像并立即将其转换为适合于在显示表面上进行alpha混合的像素格式.如果你需要以其他格式对其他屏幕缓冲区进行blit,你可以使用其他一些表面.

你可以简单地设置每像素alpha,比如你有一个函数,它获取rgb颜色值的3元组并返回一些所需的4元组rgba颜色alpha,你可以改变每个像素的表面:

def set_alphas(color):
    if color == (255,255,0): # magenta means clear
        return (0,0,0,0)
    if color == (0,255,255): # cyan means shadow
        return (0,0,0,128)
    r,g,b = color
    return (r,g,b,255) # otherwise use the solid color from the image.

for row in range(myimage.get_height()):
    for col in range(myimage,get_width()):
        myimage.set_at((row, col), set_alphas(myimage.get_at((row, col))[:3]))

还有其他更有用的方法可以做到这一点,但我希望这会给你一个想法.

上一篇:python – 在Pygame中制作精灵跳转


下一篇:如何在c#中翻转精灵