Pygame如何改变表面的大小?

时间:2011-06-26 21:03:57

标签: pygame geometry-surface

如何在pygame中更改具有图像(不缩放)的曲面大小。当我在pygame中加载图像时,表面变为图像的大小。我需要将曲面的大小更改为帧的大小(精灵表)。

以下是我用来解决问题的代码(感谢Chris Dennett):

self.surface = pygame.Surface((20, 20))
self.surface.blit(pygame.image.load(imageName).convert_alpha(), (0,0), (0, 0, frameWidth, frameHeight))

2 个答案:

答案 0 :(得分:3)

创建一个新曲面,将所需的宽度和高度作为参数传递(即精灵的大小)。然后使用newsurf.blit(spritesheet, (0, 0), (posX, posY, newsurf.getWidth(), newsurf.getHeight()))。应该管用。然后你可以使用newsurf作为你的精灵。 posXposY应分别是您要在精灵表中进行blit的x和y。

答案 1 :(得分:3)

对于精灵表,你有两个不错的选择。

1)将spritesheet加载为一个Surface。

blitting时,使用source rect参数。这将从表单中只显示一帧。

2)使用地下。

将spritesheet加载为一个Surface。 加载所需的每个帧的地下:http://www.pygame.org/docs/ref/surface.html#Surface.subsurface

就你而言,地下是一个新的'表面,具有细胞的宽度和高度。但是,它不是重复的记忆。它是联系在一起的。

来自文档:

  

返回一个与其新父级共享像素的新Surface。该   新表面被认为是原始的孩子。修改为   要么Surface像素会相互影响。表面信息如   剪切区域和颜色键对每个Surface都是唯一的。