如何使用Pygame裁剪图像?

dob*_*eis 16 python pygame image crop surface

我正在学习pygame并想要一个具有三种状态的按钮的图形:正常,悬停和按下.我有一个像这样的图像......

三个按钮状态,垂直堆叠

......我希望Surface使用它的一部分得到一个新的.

我正在使用以下代码加载图像:

 buttonStates = pygame.image.load(os.path.join('image','button.png'))
Run Code Online (Sandbox Code Playgroud)

如何仅使用该图形的一部分来制作新曲面?

PAG*_*PAG 31

cropped = pygame.Surface((80, 80))
cropped.blit(buttonStates, (0, 0), (30, 30, 80, 80))
Run Code Online (Sandbox Code Playgroud)

表面上的blit方法"粘贴"另一个表面.blit的第一个参数是源表面.第二个是要粘贴的位置(在这种情况下,左上角).第三个(可选)参数是要粘贴的源图像的区域 - 在这种情况下,从顶部开始是80x80平方30px,从左侧开始是30px.


skr*_*krx 8

您还可以使用该pygame.Surface.subsurface方法创建与其父表面共享像素的子表面。但是,您必须确保 rect 位于图像区域内,否则 aValueError: subsurface rectangle outside surface area将被凸起。

subsurface = a_surface.subsurface((x, y, width, height))
Run Code Online (Sandbox Code Playgroud)