2

这只是我在 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.

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

PS我见过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 )

以上似乎对我来说很完美。谢谢。:)

4

1 回答 1

2

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

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

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

于 2012-04-06T13:45:42.057 回答