Для некоторых (но не всех!) Изображений копирование поверхности с использованием surface.copy()
теряет прозрачность. Значит, у меня есть два вопроса?Использование Surface.copy() иногда пропускает прозрачность
Почему копия теряет прозрачность?docs звук все о новой поверхности должно быть одинаковым, но это, очевидно, не происходит.
Почему это происходит с некоторыми изображениями, а не с другими?
Вот пример «плохие» изображения - при копировании, прозрачность теряется
Вот пример «хорошо» изображения - при копировании, прозрачность является не утерян.
А вот код, который вы можете запустить, чтобы увидеть разницу:
import pygame
def test():
screen = pygame.display.set_mode((320, 240))
bad_original = pygame.image.load('bad-image.gif')
bad_copied = bad_original.copy()
good_original = pygame.image.load('good-image.gif')
good_copied = good_original.copy()
while True:
for event in pygame.event.get():
if (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE or
event.type == pygame.QUIT):
pygame.quit()
screen.fill((150, 150, 150))
screen.blit(bad_original, (0,0))
screen.blit(bad_copied, (100, 0))
screen.blit(good_original, (0,100))
screen.blit(good_copied, (100, 100))
pygame.display.flip()
if __name__ == '__main__':
test()
И черт, для завершения, вот что скриншот выполнения кода выглядит.
Пожалуйста, обратите внимание, что я не ищу обходные пути; Я просто хочу знать, что я не понимаю о surface.copy
, или что-то, что, по вашему мнению, я не понимаю о работе с поверхностями Pygame.
Я использую Python 3.3 и Pygame 1.9.2pre на компьютере с Windows 7.
Кажется, что это ошибка в pygame. –
Huh. Хорошо знать. Является ли это известной ошибкой или я должен заполнить отчет об ошибке? –