Pygame - 将表面存储为图像

时间:2012-04-06 13:07:22

标签: 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相比,它的文档很差。

如果我的问题在任何地方都没有任何意义,请回复。我会不断更新它。

P.S。我见过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 )

以上似乎对我来说非常合适。谢谢。 :)

1 个答案:

答案 0 :(得分:2)

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

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

如果要继续这样做,粘贴的角落也应该被复制,就像一个指向自己输出的摄像机 - 所以“正确的方法”是这样做:保持yoru绘图在一个单独的,在内存表面,将它blit到屏幕表面,然后将其上方的缩略图blit。