使用Pygame和Python 3来绘制非矩形精灵的拷贝

3

我正在制作一款游戏,在游戏中我使用pygame.image.load()函数从图像(PNG)中加载精灵和背景。

我的问题是,并非所有的精灵都是矩形的,因此它们会在我将它们blit到的背景上留下丑陋的白色空间。在下面的图片中,白色部分是飞船精灵的一部分,但我希望它能与背景融合。

enter image description here

有没有简单的方法来解决这个问题?感谢任何帮助提供的帮助。


你确定船的图像本身是透明的吗?我已经成功加载了透明的.png文件。另外,你用什么软件制作了那个图像? - ASCIIThenANSI
1个回答

3
如果图像具有透明背景(一些像素是透明的)(PNG格式),则必须使用 convert_alpha()
 image = pygame.image.load(filename).convert_alpha()

如果图片没有透明背景(GIF,JPG),那么您可以使用set_colorkey(),pygame会将所选颜色视为透明。
 image = pygame.image.load(filename).set_colorkey(color)

许多精灵图像使用粉色作为关键色

enter image description here


我尝试使用convert_alpha(),但没有任何区别。这可能是因为我在mspaint上制作的吗? - Vladimir Shevyakov
你必须使用带有透明像素的PNG格式。如果在图像查看器中看到白色背景,则表示你没有透明背景,convert_alpha()将无法工作。然后你只能使用set_colorkey(WHITE)(其中WHITE = (255,255,255))。 - furas
好的,谢谢...但是我该如何在MSPaint或其他软件中制作具有透明像素的图像? - Vladimir Shevyakov
我没有mspaint,但我认为你无法在mspaint中获得透明背景。你需要GIMPpaint.net或任何其他位图程序(或者如果你喜欢使用矢量对象,则可以使用Inkscape)。 - furas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接