Pygame,通过轴旋转图像

3 投票
1 回答
1049 浏览
提问于 2025-04-17 23:12

我想把加载的图片旋转,但需要按照特定的轴来旋转。

我之前是这样做的:

arm  = pygame.image.load('w1.png').convert()
arms = [pygame.transform.rotate(arm, deg) for deg in range(0, 360, 4)]

然后我用以下方式遍历了手臂的索引:

count+=1
arms[count]

旋转是有效的,但并没有按照正确的轴旋转。我写过一些算法,可以旋转用pygame.draw.line画的线,但我不知道怎么用在图片上。

任何建议都非常感谢,

谢谢

1 个回答

2

在你旋转图片之后,记得在绘制之前,先获取图片的新矩形区域,然后把这个矩形的位置属性改回到原来的位置。

简单来说,就是先保存矩形的中心点,旋转图片,获取新的矩形,再把新的矩形中心设置回去,然后再绘制。

使用中心点属性只会让图片围绕中心旋转,但如果试试用角落的某个点,可能会更容易找到正确的方法。

def RESET_ROTATED_RECT(old_rect,rotated_image):
    old_pos=old_rect.center
    newrect=rotated_image.get_rect()
    newrect.center=old_pos
    return newrect

我经常使用中心点,但还没尝试过其他位置。可以试着玩一玩。

撰写回答