Pygame如何改变表面的大小?

nob*_*ody 4 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))
Run Code Online (Sandbox Code Playgroud)

nin*_*key 5

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

1) 将 spritesheet 作为一个 Surface 加载。

当位块传送时,使用源矩形参数。这只会从纸张上复制一帧。

2) 使用地下。

将精灵表加载为一个表面。加载您想要的每个帧的地下:http://www.pygame.org/docs/ref/surface.html#Surface.subsurface

就您而言,次表面是一个“新”表面,具有单元格的宽度和高度。但是,它不是重复内存。它是相连的。

来自文档:

返回一个与其新父级共享其像素的新 Surface。新 Surface 被视为原始 Surface 的子版本。对任一表面像素的修改都会相互影响。每个 Surface 的表面信息(例如剪切区域和颜色键)都是唯一的。