这只是我接触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/