如何在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))
答案 0 :(得分:3)
创建一个新曲面,将所需的宽度和高度作为参数传递(即精灵的大小)。然后使用newsurf.blit(spritesheet, (0, 0), (posX, posY, newsurf.getWidth(), newsurf.getHeight()))
。应该管用。然后你可以使用newsurf作为你的精灵。 posX
和posY
应分别是您要在精灵表中进行blit的x和y。
答案 1 :(得分:3)
对于精灵表,你有两个不错的选择。
blitting时,使用source rect参数。这将从表单中只显示一帧。
将spritesheet加载为一个Surface。 加载所需的每个帧的地下:http://www.pygame.org/docs/ref/surface.html#Surface.subsurface
就你而言,地下是一个新的'表面,具有细胞的宽度和高度。但是,它不是重复的记忆。它是联系在一起的。
来自文档:
返回一个与其新父级共享像素的新Surface。该 新表面被认为是原始的孩子。修改为 要么Surface像素会相互影响。表面信息如 剪切区域和颜色键对每个Surface都是唯一的。