我正在使用this sprite做一些实验。我用GIMP裁剪了工作表的一部分,并使蓝色背景透明,结果是this。但是,当我使用这个sprite运行代码时,我仍然得到一个带有蓝色背景的sprite。同样的事情也发生在其他精灵上(不同的精灵工作表,相同的源代码,相同的编辑过程)。
现在,我知道我可以使用PyGame本身设置透明颜色,但我想知道这是不是唯一的方法?我不能通过图像本身来做吗?为什么在我用GIMP清除了一个蓝色的backgorund之后,PyGame仍然可以读取它呢?
P.S.SSCE将是链接的GitHub回购的pvz_shooter_test.py和/或image_test.py。
发布于 2012-07-17 18:24:08
尝试使用mySurface.convert_alpha() (查看有关它的pygame documentation )。
发布于 2013-11-02 16:40:14
只是一些额外的细节,为什么在我用GIMP清除了背景之后,PyGame仍然读到了蓝色背景。
当图像文件格式支持它时,像素不仅仅表示为RGB位。每个像素都有额外的信息,即alpha通道。GIMP所做的是将alpha位设置为0%不透明度。RGB值保持不变(在本例中为蓝色)。因为我的PyGame代码没有设置为读取额外的alpha位,所以它只读取描述蓝色的RGB。convert_alpha方法告诉PyGame也要读取alpha通道。
https://stackoverflow.com/questions/11519727
复制相似问题