Python 如何在pygame中创建具有透明背景的曲面

Python 如何在pygame中创建具有透明背景的曲面,python,transparency,pygame,Python,Transparency,Pygame,有人能给我一些在pygame中创建具有透明背景的曲面的示例代码吗?这应该可以做到: image = pygame.Surface([640,480], pygame.SRCALPHA, 32) image = image.convert_alpha() 确保颜色深度(32)保持显式设置,否则这将不起作用。您也可以为其设置颜色键,就像GIF文件透明度一样。这是制作精灵最常用的方法。原始位图具有插图,并且具有特定颜色作为背景,不会绘制,这是colorkey: surf.set_colorkey((

有人能给我一些在pygame中创建具有透明背景的曲面的示例代码吗?

这应该可以做到:

image = pygame.Surface([640,480], pygame.SRCALPHA, 32)
image = image.convert_alpha()

确保颜色深度(32)保持显式设置,否则这将不起作用。

您也可以为其设置颜色键,就像GIF文件透明度一样。这是制作精灵最常用的方法。原始位图具有插图,并且具有特定颜色作为背景,不会绘制,这是colorkey:

surf.set_colorkey((255,0,255)) // Sets the colorkey to that hideous purple

使用colorkey而不是alpha的曲面进行blit要快得多,因为它们不需要任何混合数学。SDL曲面使用一个简单的位掩码,当它有一个colorkey集时,它几乎没有开销。

您有3种可能:

  • 将透明颜色关键点设置为

    颜色键指定被视为透明的颜色。例如,如果有一个黑色背景的图像应该是透明的,请设置黑色颜色键:

    my_surface.set_colorkey((0,0,0))
    
  • 创建新曲面时,可以启用其他功能。设置该标志以创建包含每像素alpha的图像格式的曲面。像素的初始值为(0,0,0,0):

    my_surface=pygame.surface((宽度、高度),pygame.SRCALPHA)
    
  • 用于创建具有提供每像素alpha的图像格式的曲面副本

    但是,如果创建新曲面并使用
    convert_alpha()
    ,则alpha通道最初设置为最大值。像素的初始值是(0,0,0,255)。在绘制任何内容之前,需要使用透明颜色填充整个曲面:

    my_surface=pygame.surface((宽度、高度))
    my_surface=my_surface.convert_alpha()
    我的曲面填充((0,0,0,0))
    

这是正确的答案。链接:我支持-
image=pygame.Surface([640480],pygame.SRCALPHA)
就是您所需要的。