我在 pygame 中有一个 200x200px 的图像,我想将其切成两半,因此 2 个形状将是 100x200px。之后,我想在屏幕上用一定数量的像素对屏幕上的 2 个新图像进行 blit。如何以这种方式分割/裁剪图像?
编辑 - 已修复!我设法通过使用pygame.transform.chop()
和自己解决了这个问题pygame.transform.rotate()
。不过,感谢您的帮助。感谢 Tankor Smash 的帮助,我知道的更多。
您不需要创建两个图像,只需使用一个并将其 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)
我相信你会更好地使用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)
现在那是伪代码,但我就是这样做的,大致
subsurface
另一种方法是使用http://www.pygame.org/docs/ref/surface.html#Surface.subsurface
如果您在一张纸上有很多精灵,您可以将其用作精灵表:http://www.pygame.org/wiki/Spritesheet?parent = CookBook