如何使用Pygame围绕其中心旋转图像?

我一直试图在使用中围绕其中心旋转图像,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


眼眸繁星
浏览 4912回答 3
3回答

慕姐8265434

您正在删除旋转创建的矩形。您需要保留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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python