Python 如何在pygame中绘制透明图像?

Python 如何在pygame中绘制透明图像?,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,考虑一个棋盘,我有一个大小为70x70的queen(queen.png)的透明图像,我想在一个黑色矩形上显示它。 代码: 错误:我没有得到透明图像,即黑色矩形根本不可见,只有白色背景的皇后。 请建议我认为pygame.draw.rect不支持alpha通道。您应该使用pygame.Surface queen = pygame.Surface([10, 10], pygame.SRCALPHA, 32) 尝试将在queen中加载的行更改为: queen = pygame.image.load('

考虑一个棋盘,我有一个大小为70x70的queen(queen.png)的透明图像,我想在一个黑色矩形上显示它。 代码:

错误:我没有得到透明图像,即黑色矩形根本不可见,只有白色背景的皇后。
请建议我认为
pygame.draw.rect
不支持alpha通道。您应该使用
pygame.Surface

queen = pygame.Surface([10, 10], pygame.SRCALPHA, 32)

尝试将在queen中加载的行更改为:

queen = pygame.image.load('queen.png').convert_alpha()

调用
pygame.image.load()
方法时,pygame从硬盘读取图像文件,并返回包含图像数据的曲面对象。 此曲面实例与显示曲面的对象类型相同,但它表示存储在内存中的图像

通过调用(图像)表面实例的
convert()
方法而不传递任何参数,Pygame将图像表面转换为与主显示表面相同的格式。建议这样做,因为绘制或blit图像与显示表面具有相同像素格式(深度、标志等)的速度更快。使用此方法时,转换的曲面将不包含alpha信息

幸运的是,Pygame曲面对象还提供了一个
convert_alpha()
方法,该方法将(图像)曲面转换为快速格式,该格式保留任何alpha信息

这意味着您需要调用queen实例的
convert_alpha()
方法来保存原始图像的任何alpha信息:

BLACK=(0,0,0)

#load the image and convert the returned surface using the convert_alpha() method
queen = pygame.image.load('queen.png').convert_alpha() 

pygame.draw.rect(DISPLAYSURF, BLACK, (10, 10, 70, 70))
DISPLAYSURF.blit(queen, (10, 10))
pygame.display.update()

在哪里插入这一行或用您的代码替换我代码的第2行?对我很有用。谢谢
BLACK=(0,0,0)

#load the image and convert the returned surface using the convert_alpha() method
queen = pygame.image.load('queen.png').convert_alpha() 

pygame.draw.rect(DISPLAYSURF, BLACK, (10, 10, 70, 70))
DISPLAYSURF.blit(queen, (10, 10))
pygame.display.update()