2

我在 pygame 中有一个 200x200px 的图像,我想将其切成两半,因此 2 个形状将是 100x200px。之后,我想在屏幕上用一定数量的像素对屏幕上的 2 个新图像进行 blit。如何以这种方式分割/裁剪图像?

编辑 - 已修复!我设法通过使用pygame.transform.chop()和自己解决了这个问题pygame.transform.rotate()。不过,感谢您的帮助。感谢 Tankor Smash 的帮助,我知道的更多。

4

3 回答 3

6

您不需要创建两个图像,只需使用一个并将其 blit 两次:

origin1 = (0,0)
separation = 20

# Load the image
img = pygame.image.load(image_path)

width, height = img.get_width()/2, img.get_height()
origin2 = origin1[0] + width + separation, origin1[1]

# Blit first half
source_area = pygame.Rect((0,0), (width, height))
screen.blit(img, origin1, source_area)

# Blit second half
source_area = pygame.Rect((width,0), (width, height))
screen.blit(img, origin2, source_area)
于 2012-07-10T19:47:59.613 回答
1

我相信你会更好地使用PIL,这里http://www.pythonware.com/products/pil/

但是如果你要使用 Pygame,它会类似于创建一个带有图像的表面,然后将表面的一半传送到屏幕的一部分,然后将另一半传送到另一个。

#load the image to a surface
img =pygame.image.load(path) 
#create a rect half the width of the image
half_rect = pygame.rect(img.width/2, img.height/2)
#blit first half
main_screen.blit((0,0), rect, img)
#blit second half
main_screen.blit((image.width+10,0),rect, img)

现在那是伪代码,但我就是这样做的,大致

于 2012-07-10T19:33:10.890 回答
0

subsurface另一种方法是使用http://www.pygame.org/docs/ref/surface.html#Surface.subsurface

如果您在一张纸上有很多精灵,您可以将其用作精灵表:http://www.pygame.org/wiki/Spritesheet?parent = CookBook

于 2012-07-10T20:44:42.247 回答