Может ли кто-нибудь дать мне пример кода, который создает поверхность с прозрачным фоном в pygame?






Это должно сделать это:
image = pygame.Surface([640,480], pygame.SRCALPHA, 32)
image = image.convert_alpha()
Убедитесь, что глубина цвета (32) остается явно установленной, иначе это не сработает.
Вы также можете задать цветовой ключ, как прозрачность файла GIF. Это самый распространенный способ создания спрайтов. Исходное растровое изображение содержит иллюстрацию и имеет определенный цвет в качестве фона, который не будет отрисовываться, а именно цветовой ключ:
surf.set_colorkey((255,0,255)) // Sets the colorkey to that hideous purple
Поверхности, которые используют цветовой ключ вместо альфа, намного быстрее преобразовываются, поскольку они не требуют математики смешивания. Поверхность SDL использует простую битовую маску, когда у нее есть набор цветовых ключей, который копирует практически без накладных расходов.
Это правильный ответ. Ссылка: riptutorial.com/pygame/example/23788/transparency
У вас есть 3 возможности:
Установите прозрачный цветовой ключ с помощью set_colorkey()
Цветовой ключ определяет цвет, который считается прозрачным. Например, если у вас есть изображение с черным фоном, которое должно быть прозрачным, установите ключ черного цвета:
my_surface.set_colorkey((0, 0, 0))
Вы можете включить дополнительные функции при создании новой поверхности. Установите флаг SRCALPHA, чтобы создать поверхность с форматом изображения, который включает попиксельный альфа-канал. Начальное значение пикселей (0, 0, 0, 0):
my_surface = pygame.Surface((width, height), pygame.SRCALPHA)
Используйте convert_alpha(), чтобы создать копию Поверхность с форматом изображения, который обеспечивает альфа на пиксель.
Однако, если вы создаете новую поверхность и используете convert_alpha(), альфа-каналы изначально устанавливаются на максимум. Начальное значение пикселей (0, 0, 0, 255). Вам нужно залить всю поверхность прозрачным цветом, прежде чем вы сможете что-либо на ней нарисовать:
my_surface = pygame.Surface((width, height))
my_surface = my_surface.convert_alpha()
my_surface.fill((0, 0, 0, 0))
Я второй -
image = pygame.Surface([640, 480], pygame.SRCALPHA)- это все, что вам нужно.