pygame.Surface.blit()
уже делает то, что вы хотите.Он наклоняет поверхность к другой поверхности, в зависимости от ее альфа-канала.Все, что вам нужно сделать, это установить альфа-канал с помощью pygame.Surface.set_alpha()
:
image.set_alpha(min(1.0,alpha)*255)
Написать функцию, которая «смешивает» поверхность с экраном.В следующей функции BlendSurface
параметр alpha
является значением непрозрачности поверхности в диапазоне [0, 1].0.0 создаст полностью прозрачную (невидимую) поверхность.1.0 создаст полностью непрозрачную поверхность:
def BlendSurface(image, pos, alpha):
image.set_alpha(min(1.0,alpha)*255)
screen.blit(image, pos)
См. Простую демонстрационную программу:
import pygame
import pygame.font
pygame.init()
BLUE = ( 0, 0, 255)
YELLOW = (255, 255, 0)
size = (800,600)
screen = pygame.display.set_mode(size)
def BlendSurface(image, pos, alpha):
image.set_alpha(min(1.0,alpha)*255)
screen.blit(blendImage, pos)
clock = pygame.time.Clock()
font = pygame.font.SysFont('Times New Roman', 100)
text = font.render('blend text', False, YELLOW)
i = 0
done = False
while not done:
clock.tick(60)
i += 1
if i > 200:
i = 0
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
screen.fill(BLUE)
BlendSurface(text, (100, 100), i/200)
pygame.display.flip()