首先,你的图像/表面需要使用逐像素alpha通道,因此在加载时调用convert_alpha()
方法。如果要创建新表面(例如示例中),还可以将pygame.SRCALPHA
传递给pygame.Surface
。
第二步是创建另一个表面(此处称为alpha_surface
),并用白色和所需的alpha值(颜色元组的第四个元素)填充。
最后,您必须将alpha_surface
贴到图像上,并将special_flags
参数设置为pygame.BLEND_RGBA_MULT
。这将使图像的不透明部分变成半透明。
import pygame as pg
pg.init()
screen = pg.display.set_mode((800, 600))
clock = pg.time.Clock()
BLUE = pg.Color('dodgerblue2')
BLACK = pg.Color('black')
IMAGE = pg.Surface((300, 300), pg.SRCALPHA)
pg.draw.circle(IMAGE, BLACK, (150, 150), 150)
pg.draw.circle(IMAGE, BLUE, (150, 150), 130)
alpha_surface = pg.Surface(IMAGE.get_size(), pg.SRCALPHA)
alpha_surface.fill((255, 255, 255, 90))
IMAGE.blit(alpha_surface, (0, 0), special_flags=pg.BLEND_RGBA_MULT)
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
screen.fill((50, 50, 50))
pg.draw.rect(screen, (250, 120, 0), (100, 300, 200, 100))
screen.blit(IMAGE, (150, 150))
pg.display.flip()
clock.tick(60)
pg.quit()
circle.png
,在你绘制它的背景和第三张图片展示你想要的外观。一张图片胜过千言万语,所以3张图片可以节省你大量的写作时间。 - Mark Setchell