Python 如何在pygame中绘制透明图像?
考虑一个棋盘,我有一个大小为70x70的queen(queen.png)的透明图像,我想在一个黑色矩形上显示它。 代码: 错误:我没有得到透明图像,即黑色矩形根本不可见,只有白色背景的皇后。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('
请建议我认为
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()