значок в Pygame не загружает прозрачность правильно - PullRequest
0 голосов
/ 01 января 2019

Я просмотрел все остальные вопросы, связанные с моим, и ни один из них не работал, вот мой код:

icon = pygame.image.load('icon.png')
surface= pygame.Surface(icon.get_size(), depth=24)
key = (0,255,0)
surface.fill(key, surface.get_rect())
surface.set_colorkey(key)
surface.blit(icon, (0,0))
surface.set_alpha(128) 

pygame.display.set_icon(surface)

Исходное изображение:

, но при выполнении он все еще содержит черный фон с едва видимым 'P'

Примечание: извините за действительно большое изображение, не знаю, как его уменьшить

1 Ответ

0 голосов
/ 02 января 2019

Измените свой код на

icon = pygame.image.load('icon.png')
icon = pygame.transform.scale(icon, (32, 32))
surface= pygame.Surface(icon.get_size())
key = (0,255,0)
surface.fill(key)
surface.set_colorkey(key)
surface.blit(icon, (0,0))

pygame.display.set_icon(surface)

Обратите внимание на изменения:

Я удалил surface.set_alpha(128), так как он не будет работать.Для значков поддерживается только цветовой ключ, но не для каждого пикселя альфа.

Я изменил surface.fill(key, surface.get_rect()) на surface.fill(key), потому что передача surface.get_rect() в качестве аргумента не нужна.

Кроме того, строкаicon = pygame.transform.scale(icon, (32, 32)) было добавлено, чтобы гарантировать, что изображение имеет правильный размер.Большие размеры часто не работают (в зависимости от вашей ОС / оконного менеджера).

...