python - Pygame - 将表面存储为图像

标签 python image pygame geometry-surface

这只是我接触pygame的第二天,对很多功能还不太了解。以下是我在表面(窗口)上所做的示例

for c in nStations:
  pygame.time.wait( 20 )
  pygame.draw.circle( window, c.tColor, c.tPosition, c.iRadius )
  pygame.display.update()

循环显示 n 个圆圈(在元组中)。现在,这将总共重复 5-6 次。我希望将表面窗口存储/保存为图像(或子表面),并将其作为缩略图/链接放在窗口的右上角。

这可能吗?或者 pygame 不是一个好的库吗?我也尝试过使用 cocos2d,但与 pygame 相比,它的文档非常差。

如果我的问题没有任何意义,请回复。我会持续更新的。

附注我见过python.surface库函数。 Surface.copy 似乎是我正在寻找的内容,但是我可以在进一步复制和编辑之前将表面存储为缩略图/图像吗?

编辑->阅读jsbueno的回复后,我做了什么:

  tThumbs.append( pygame.transform.smoothscale( window, (32, 32) ) )
  # the above statement inside drawing-circle loop

i = 1
for thumb in tThumbs:
  window.blit( thumb, (1050, 36*i) )
  pygame.display.update()
  i += 1
  pygame.time.wait( 200 )

以上似乎对我来说非常有效。谢谢。 :)

最佳答案

确实 - Pygame 中的所有绘图和 transofmr 函数都接受“表面”作为第一个参数。实际上,在 pygame 中,“表面”图像。

显示窗口也只是一个表面——尽管是一个专门的表面,其内容反射(reflect)在屏幕上。但是您可以使用 pygame.transform.smoothscale 获取屏幕表面的缩略图副本,然后使用屏幕对象本身的 blit 方法将其粘贴到屏幕上。

如果要连续完成此操作,则粘贴的角也应该被复制,就像摄像机指向其自己的输出一样 - 因此“正确的方法”是:将 yoru 绘图保持在内存表面中的单独位置,将其位图传输到屏幕表面,然后将其上方的缩略图位图传输。

关于python - Pygame - 将表面存储为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10043904/

相关文章:

java - 从 Jar : Always null 加载图像

Javascript:在div内的图像顶部接收onClick,可以完成吗?

python - 如何让我的代码等待点击?

python - 如何将具有特定文件扩展名的文件复制到我的 python(2.5 版)脚本中的文件夹中?

python - 打印列表中相同值的总和

c - 在 c 中逐个像素地模糊图像 - 特殊情况

python - 如何在贪吃蛇游戏中碰撞后让 Sprite 移动到不同的位置

python - 如何在 pandas 数据框中有一个空的第一行

python - 启用 AUTHENTICATION_BACKENDS 后 Django.contrib.auth 单元测试失败

python - pygame类结构