Ответ 1
http://www.pygame.org/docs/ref/image.html рекомендует:
Для альфа-прозрачности, например, в .png изображениях, используйте метод
convert_alpha()
после загрузки, чтобы изображение имело прозрачность пикселя.
Я пытаюсь разбить изображение PNG на поверхность, но прозрачная часть изображения по какой-то причине становится черной, вот простой код:
screen = pygame.display.set_mode((800, 600), pygame.DOUBLEBUF, 32)
world = pygame.Surface((800, 600), pygame.SRCALPHA, 32)
treeImage = pygame.image.load("tree.png")
world.blit(treeImage, (0,0), (0,0,64,64))
screen.blit(world, pygame.rect.Rect(0,0, 800, 600))
Что мне нужно сделать для решения проблемы? Изображение имеет альфа-прозрачность, я открыл его в PhotoShop, и фон становится прозрачным, а не черным или белым или любым другим цветом.
Спасибо за вашу поддержку:)
http://www.pygame.org/docs/ref/image.html рекомендует:
Для альфа-прозрачности, например, в .png изображениях, используйте метод
convert_alpha()
после загрузки, чтобы изображение имело прозрачность пикселя.
Вы не перевернули doublebuffer.
import pygame
from pygame.locals import Color
screen = pygame.display.set_mode((800, 600))
treeImage = pygame.image.load("tree.png").convert_alpha()
white = Color('white')
while(True):
screen.fill(white)
screen.blit(treeImage, pygame.rect.Rect(0,0, 128, 128))
pygame.display.flip()
Это должно работать для вашей проблемы.
Ваш код выглядит так, как будто он должен быть правильным. Библиотека SDL не поддерживает альфа-блины, как это, но Pygame добавила поддержку для нее некоторое время назад. В Pygame 1,8 поддержка была добавлена для пользовательских режимов смешивания, и мне интересно, удалил ли этот отпечаток внутренний альфа-альфа-блиттер Pygame?
Увы, потребуется дальнейшее расследование.