← Все вопросы

Картинка с прозрачным фоном в pygame рисуется с чёрным квадратом вокруг — как убрать?

Задан 23 месяца назад1.5к просмотров1 ответ
6

Нарисовал персонажа в png с прозрачным фоном, загрузил в pygame через pygame.image.load("hero.png") и blit. Но вокруг героя в игре чёрный (или белый) квадрат — прозрачность пропала. Как сделать так, чтобы фон картинки остался прозрачным?

1 ответ

11
✓ Принятый ответ — помог автору

После загрузки картинки с прозрачностью нужно вызвать .convert_alpha() — именно он сохраняет альфа-канал (прозрачность). Просто .convert() или ничего — прозрачность теряется, и появляется фон.

hero = pygame.image.load("hero.png").convert_alpha()
screen.blit(hero, (x, y))   # теперь фон прозрачный

Важный момент: convert_alpha() (и вообще convert()) работают только после того, как создано окно pygame.display.set_mode(...). Если вызвать раньше — будет ошибка. Поэтому грузи картинки уже после создания окна.

Если же сам png без прозрачности (фон реально залит цветом) — никакой convert не поможет, надо в графическом редакторе сделать фон прозрачным или вырезать его.

Ваш ответ

Войдите, чтобы ответить на вопрос.