Может кто-нибудь дать мне пример кода, который создает поверхность с прозрачным фоном в pygame?
Как сделать поверхность с прозрачным фоном в pygame
Ответ 1
Это должно сделать это:
image = pygame.Surface([640,480], pygame.SRCALPHA, 32)
image = image.convert_alpha()
Убедитесь, что глубина цвета (32) остается явно заданной. Это не будет работать.
Ответ 2
Вы также можете дать ему colorkey, как и прозрачность файла GIF. Это самый распространенный способ создания спрайтов. Оригинальное растровое изображение имеет изображение и имеет определенный цвет в качестве фона, который не будет рисован, что является colorkey:
surf.set_colorkey((255,0,255)) // Sets the colorkey to that hideous purple
Поверхности, которые используют colorkey вместо альфы, намного быстрее, чем blit, так как они не требуют какой-либо математики смешивания. На поверхности SDL используется простая битовая маска, когда у нее есть набор colorkey, который практически не распространяется на служебные.
Ответ 3
Я не могу комментировать, потому что у меня недостаточно высокая репутация, но мне было интересно, может ли кто-нибудь помочь мне сделать этот сценарий прозрачным. Я не видел строк, которые были в ответе...
import pygame as p, random as r, time as t
width, height = 640, 480
pos, vel = [0, 0], [1, 1]
rectWidth, rectHeight = 130, 100
screen = p.display.set_mode((width, height))
p.init()
pos[0], pos[1] = r.randint(200, 400), r.randint(200, 400)
while True:
for event in p.event.get():
if event.type == p.QUIT: exit()
keys = p.key.get_pressed()
if keys[p.K_ESCAPE]: p.event.post(p.event.Event(p.QUIT))
pos[0] += vel[0]
pos[1] += vel[1]
if pos[0] > width or pos[0] < rectWidth: vel[0] = -vel[0]
if pos[1] > height or pos[1] < rectHeight: vel[1] = -vel[1]
screen.fill((0, 0, 0))
screen.fill((255, 0, 0), (pos[0] - rectWidth, pos[1] - rectHeight, rectWidth, rectHeight))
p.display.flip()
t.sleep(1.0/80.0)