使用png图像作为游戏覆盖表面时,set_alpha()无法正常工作

时间:2017-08-07 08:25:35

标签: python image pygame photoshop

当游戏结束时,我想把图像放在它上面。但是我不希望它覆盖游戏而不是表面,所以我希望我可以在加载convert_alpha()之后设置png图像的透明度。但是在我使用set_alpha(0)后它无法正常工作。

我能想到的问题是:

  1. 我的png图片没有alpha通道,所以我在我的photoshop中查看了它。它是rgb,而不是rgba,所以如何为它添加alpha通道,这意味着将rgb转换为rgba。
  2. (注意:我可以在photoshop中更改图像的透明度并在我的pygame中使用它,它可以工作,但我想我可以随时更改程序中的透明度,而不仅仅是使用photoshop)

    1. 我的pygame方法使用错误的
    2. png image:

      enter image description here

      我想要的结果是:

      enter image description here

      (请忽略中文,他们只是另外两张图片)):

      代码是:

      img_bg = pygame.image.load('./ui/background.png').convert_alpha()
      img_bg.set_alpha(0)
      screen.blit(img_bg, (0, 0))  
      

1 个答案:

答案 0 :(得分:0)

set_alpha不适用于使用每像素alpha的曲面,因此请使用convert方法而不是convert_alpha。我将值更改为70,因为0会使图像完全透明。

img_bg = pygame.image.load('./ui/background.png').convert()
img_bg.set_alpha(70)