【问题标题】:Is there a function in Pygame to save a portion of the screen as an image? [duplicate]Pygame 中是否有将屏幕的一部分保存为图像的功能? [复制]
【发布时间】:2021-09-21 06:12:58
【问题描述】:

我正在用 Pygame 制作一个绘图程序。除了可以保存图像之外,所有功能基本上都已完成。是否有任何内置的 Pygame 功能可以做到这一点,或者我必须找到其他方式(例如截屏或其他方式)。

【问题讨论】:

  • 裁剪屏幕,然后使用pygame.image.save()

标签: python pygame


【解决方案1】:

screen 是一个Surface 对象,它有方法subsurface(Rect) 来获取表面的一部分——这部分也是一个Surface 对象。

还有函数pygame.image.save(surface, filename)


其他方法:在开始时创建较小的Surface 并在此表面上绘制(而不是直接在screen 上绘制)和blit() 此表面在screen 上显示它和save() 此表面到文件。

您甚至可以使用许多表面并将它们保留在列表中以创建函数Undo。当您使用新工具时,您复制表面并将其放在列表中。当您使用 Undo 时,您将获得列表中的最后一个表面。

【讨论】:

  • 谢谢!这应该是完美的!另外,有趣的是,我刚刚实现了一个类似的undo() 函数,所以我猜伟大的思想是一样的。
  • 另外,我会对此有所帮助,但我想我没有足够的声誉。
  • 分离的表面也可以用来绘制比屏幕更大的图像。您可以创建更大的图像并仅显示一些次表面并使用一些按钮来滚动表面。
  • 据我所知,当您将答案标记为已接受时,您可能有足够的声誉,但您必须等待几分钟才能对其进行投票。
  • 哦!我不知道你能做到这一点!
【解决方案2】:

如果是绘图游戏,那么您可能会发现手动制作图像非常容易。

我知道这听起来很可怕,但事实并非如此,尤其是在 python 中。

您可以使用PyPng 将二维数组转换为图像,因为我假设您已经使用二维数组来存储绘图

【讨论】:

  • 我实际上存储了制作成品所需的线条(使用 draw.line 函数)。如果你知道的话,有什么简单的方法吗?
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
相关资源
最近更新 更多