Я пытаюсь скопировать изображение с прозрачными пленками поверх поверхности с остальной частью карты. (Это второй слой.) Когда я его копирую, прозрачность отображается черным цветом. Есть способ исправить это. Я включил связанный с этим код.
lily_tex = spritesheet.get_sprite(1, 4).convert_alpha()
Это получает изображение из таблицы спрайтов.
img = pygame.Surface((self.tilesize, self.tilesize))
img.blit(self.img, (0, 0), (x, y, self.tilesize, self.tilesize))
return img.convert()
И это то, что вытаскивает его из листа спрайтов. Ниже показано, что переносит его на поверхность для переноса в экранный буфер.
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))
Спасибо
return img.convert()
может бытьreturn img.convert_alpha()
. Однако, если вы ужеconvert()
отредактировалиself.img
, вам не нужно преобразовывать изображение / поверхность, полученную в результате блита. Выполнениеconvert()
снова, вероятно, удалит альфа-канал, который был сохранен в исходномconvert_alpha()
- person Glenn Mackintosh   schedule 06.08.2020img = pygame.Surface((self.tilesize, self.tilesize), pygame.SRCALPHA)
. Это создает поверхность с альфа-каналом. - person Kingsley   schedule 07.08.2020convert_alpha()
и увидел где-то еще, чтобы добавитьimg.setcolorkey((0, 0, 0))
, поскольку это был цвет фона изображения. Я думаю, что это было необходимо, поскольку изображение могло использовать черный цвет, чтобы показать прозрачность. При просмотре изображения в проводнике иногда оно бывает черным. Поверхность с альфа-каналом могла работать, но я думаю, что это было изображение, а не pygame. - person Some Goose   schedule 07.08.2020