2013-06-24 7 views
2

Есть ли способ сделать снимок экрана правой половины окна моего pygame?Как сделать снимок экрана определенной части экрана в Pygame

Я делаю игру с использованием pygame, и мне нужно сделать снимок экрана, но не весь экран, только правую половину.

Я знаю:

pygame.image.save(screen,"screenshot.jpg") 

Но это будет включать в себя весь экран в изображении.

Есть ли способ сделать снимок экрана правой половины окна моего pygame?

Возможно, изменив область, в которую он входит? Я искал его, но не мог найти ничего, о чем я думал, может быть, я смогу использовать PIL для его обрезки, но это похоже на дополнительную работу.

Если это невозможно, может ли кто-нибудь сказать мне самый простой способ обрезать картинку всего экрана?

ответ

7

Если вы хотите, чтобы скриншот имел одну и ту же часть экрана, вы можете использовать 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") 

subsurface будет хорошо работать в этом сценарии, потому что любые изменения в родительской поверхность (screen в данном случае) будут применены к геологической среде, а также.

Если вы хотите, чтобы указать произвольную часть экрана, чтобы сделать снимок экрана (так что не тот же прямоугольник каждый раз), то, вероятно, лучше создать новую поверхность, экран на эту поверхность, а затем сохраните его.

rect = pygame.Rect(25, 25, 100, 50) 
screenshot = pygame.Surface(100, 50) 
screenshot.blit(screen, area=rect) 
pygame.image.save(screenshot, "screenshot.jpg") 
+0

ой вот хорошая идея спасибо! – Serial

-1

Я хотел бы сделать что-то вроде:

example = pygame.Surface(screen.get_width()/2, 0)

Тогда позже, когда вы хотите взять скриншот сделать:

pygame.image.save(example, "example.jpg")