Python Pygame 透明显示为黑色
Python Pygame Trasparency showing as black
我正在尝试在 Surface 顶部使用透明胶片与地图的其余部分一起 blit 图像。 (这是第二层。)当我 blit 它时,它显示为黑色的透明度。有没有办法来解决这个问题。我包含了与之相关的代码。
lily_tex = spritesheet.get_sprite(1, 4).convert_alpha()
这从精灵中获取图像sheet。
img = pygame.Surface((self.tilesize, self.tilesize))
img.blit(self.img, (0, 0), (x, y, self.tilesize, self.tilesize))
return img.convert()
这就是从精灵中提取它的原因 sheet。
下面是将其 blits 到表面以 blits 到屏幕缓冲区的内容。
def create_map(self):
for map_data in self.map_data:
for row in range(len(map_data)):
for column in range(len(map_data[row])):
if map_data[row][column] == 0:
continue
texture = self.key.get(map_data[row][column])
self.map_img.blit(texture, (column * self.tilesize, row * self.tilesize))
谢谢
当您调用 convert()
时,图像的像素格式已更改。如果图像格式具有 per alpha 像素,则此信息将丢失。
使用convert_alpha()
代替convert()
:
return img.convert()
return img.convert_alpha()
如果图像没有每像素 alpha 格式,您必须使用 set_colorkey()
:
设置透明色键
img = pygame.Surface((self.tilesize, self.tilesize))
img.blit(self.img, (0, 0), (x, y, self.tilesize, self.tilesize))
img.set_colorkey((0, 0, 0))
或者,您可以使用 SRCALPHA
标志创建每个像素 alpha 格式的表面:
img = pygame.Surface((self.tilesize, self.tilesize), pygame.SRCALPHA)
img.blit(self.img, (0, 0), (x, y, self.tilesize, self.tilesize))
我正在尝试在 Surface 顶部使用透明胶片与地图的其余部分一起 blit 图像。 (这是第二层。)当我 blit 它时,它显示为黑色的透明度。有没有办法来解决这个问题。我包含了与之相关的代码。
lily_tex = spritesheet.get_sprite(1, 4).convert_alpha()
这从精灵中获取图像sheet。
img = pygame.Surface((self.tilesize, self.tilesize))
img.blit(self.img, (0, 0), (x, y, self.tilesize, self.tilesize))
return img.convert()
这就是从精灵中提取它的原因 sheet。 下面是将其 blits 到表面以 blits 到屏幕缓冲区的内容。
def create_map(self):
for map_data in self.map_data:
for row in range(len(map_data)):
for column in range(len(map_data[row])):
if map_data[row][column] == 0:
continue
texture = self.key.get(map_data[row][column])
self.map_img.blit(texture, (column * self.tilesize, row * self.tilesize))
谢谢
当您调用 convert()
时,图像的像素格式已更改。如果图像格式具有 per alpha 像素,则此信息将丢失。
使用convert_alpha()
代替convert()
:
return img.convert()
return img.convert_alpha()
如果图像没有每像素 alpha 格式,您必须使用 set_colorkey()
:
img = pygame.Surface((self.tilesize, self.tilesize))
img.blit(self.img, (0, 0), (x, y, self.tilesize, self.tilesize))
img.set_colorkey((0, 0, 0))
或者,您可以使用 SRCALPHA
标志创建每个像素 alpha 格式的表面:
img = pygame.Surface((self.tilesize, self.tilesize), pygame.SRCALPHA)
img.blit(self.img, (0, 0), (x, y, self.tilesize, self.tilesize))