我一直试图在使用中围绕其中心旋转图像,pygame.transform.rotate()但它不起作用。特别是挂起的部分是rot_image = rot_image.subsurface(rot_rect).copy()。我得到了例外:ValueError: subsurface rectangle outside surface area以下是用于旋转图像的代码:def rot_center(image, angle): """rotate an image while keeping its center and size""" orig_rect = image.get_rect() rot_image = pygame.transform.rotate(image, angle) rot_rect = orig_rect.copy() rot_rect.center = rot_image.get_rect().center rot_image = rot_image.subsurface(rot_rect).copy() return rot_image
3 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
您正在删除旋转创建的矩形。您需要保留rect,因为它在旋转时会改变大小。
如果要保留对象位置,请执行以下操作:
def rot_center(image, angle):
"""rotate a Surface, maintaining position."""
loc = image.get_rect().center #rot_image is not defined
rot_sprite = pygame.transform.rotate(image, angle)
rot_sprite.get_rect().center = loc
return rot_sprite
# or return tuple: (Surface, Rect)
# return rot_sprite, rot_sprite.get_rect()
添加回答
举报
0/150
提交
取消