如何使用 Pygame 裁剪图像?

新手上路,请多包涵

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

三种按钮状态,垂直堆叠

…我想使用它的一部分来获得一个新的 Surface

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

  buttonStates = pygame.image.load(os.path.join('image','button.png'))

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

原文由 dobleseis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 809
2 个回答
cropped = pygame.Surface((80, 80))
cropped.blit(buttonStates, (0, 0), (30, 30, 80, 80))

表面上的 blit 方法将另一个表面“粘贴”到它上面。 blit 的第一个参数是源表面。第二个是要粘贴到的位置(在本例中为左上角)。第三个(可选)参数是要从中粘贴的源图像区域——在本例中是一个 80x80 正方形,距顶部 30 像素,距左侧 30 像素。

原文由 PAG 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 subsurface = a_surface.subsurface((x, y, width, height))

原文由 skrx 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏