如何在Pygame中截取屏幕的某些部分

Ser*_*ial 5 python pygame screenshot crop

有没有办法可以截取我的pygame窗口的右半部分?

我正在使用pygame制作游戏,我需要拍摄屏幕的快照,而不是整个屏幕,只是右半部分.

我知道:

pygame.image.save(screen,"screenshot.jpg")
Run Code Online (Sandbox Code Playgroud)

但这将包括图像中的整个屏幕.

有没有办法可以截取我的pygame窗口的右半部分?

也许通过某种方式改变它所包含的区域?我用Google搜索了但是找不到任何我想的东西也许我可以使用PIL裁剪它,但这似乎是很多额外的工作.

如果不可能,有谁可以告诉我最简单的方法来裁剪整个屏幕的图片?

Haz*_*Haz 11

如果您始终希望屏幕截图与屏幕的相同部分相同,则可以使用subsurface. http://www.pygame.org/docs/ref/surface.html#pygame.Surface.subsurface

rect = pygame.Rect(25, 25, 100, 50)
sub = screen.subsurface(rect)
pygame.image.save(sub, "screenshot.jpg")
Run Code Online (Sandbox Code Playgroud)

subsurface会在这种情况下工作得很好,因为父表面的任何改变(screen在这种情况下)将被施加到液面为好.

如果你想能够指定屏幕的任意部分来截取(因此,每次都不是相同的矩形)那么创建一个新的表面可能会更好,将屏幕的所需部分blit到那个表面,然后保存.

rect = pygame.Rect(25, 25, 100, 50)
screenshot = pygame.Surface(100, 50)
screenshot.blit(screen, area=rect)
pygame.image.save(screenshot, "screenshot.jpg")
Run Code Online (Sandbox Code Playgroud)