为背景设置恒定的半透明度

时间:2014-08-30 09:09:51

标签: python pygame pygame-surface

我正在尝试为我的游戏添加背景图像,我需要在某种不透明度下。我使用了表面的set_alpha()方法来控制它的半透明度。然而,这创造了一种淡入效果,初始背景在设定的不透明度最终变为其全亮度。有什么方法可以将背景的半透明度设置为常数值吗?

我的代码是

self.bg = pygame.image.load("../game_images/background.png")
self.bg_size = self.bg.get_size()
self.bg_rect = self.bg.get_rect()
self.bg.set_alpha(5)
self.screen = pygame.display.set_mode(self.bg_size,pygame.FULLSCREEN)
self.screen.blit(self.bg, self.bg_rect)
pygame.display.update()

有关如何执行此操作的任何提示?

1 个答案:

答案 0 :(得分:0)

有助于看到游戏循环。

您的图像可能会变亮,因为您在重新绘制之前不会清除屏幕。

screen.fill((0,0,0))
screen.blit(self.bg, self.bg_rect)
pygame.display.update()

如果您决定执行 self.bg.convert_alpha()。然后你需要使用 pygame.surfarray.pixels_alpha(),这需要安装numpy。

# value is a float .01 to .99
def set_alpha(image, value):
    array = pygame.surfarray.pixels_alpha(image)
    for x in xrange(array.shape[0]):
        for y in xrange(array.shape[1]):
            array[x][y] = int(array[x][y] * value)