首页 > 解决方案 > 有没有一种简单的方法可以在 pygame 中旋转图像?

问题描述

我刚开始学习 pygame,我有一张图片 [ https://imgur.com/a/t24fNiA],它从一边移动到另一边。它是一个圆圈,我希望它每次移动时旋转/滚动一点。

我已经在网上查到了这一点,但无法真正将其应用到我自己的工作中。到目前为止,我只有def rotcenter(image, angle):. 我真的不知道从这里去哪里。

 if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    xchange = -5
                    # image rotates

                elif event.key == pygame.K_RIGHT:
                    xchange = 5
                    # image rotates

代替# image rotates,我想调用一个将图像旋转一定角度的子程序。

理想情况下它不应该走得太远,因为 x 的每个变化都是 5,但希望有人可以帮助我想出一个解决方案。请尝试简化/解释我可能不理解的内容,我只使用了 pygame 大约 40 分钟,主要是阅读教程。

任何帮助,将不胜感激!谢谢 :)

标签: pythonpygame

解决方案


您可以使用 pygame.transform.rotate 来旋转图像。

def rotcenter(image, angle):
    return pygame.transform.rotate(image, angle)

将是你的功能。您将已加载的 pygame 图像传递给它,它会返回一个旋转的新表面。所以当你想旋转图像时,你会做类似的事情

image = rotcenter(image, 5)

然后 blit 新图像。

我用来测试的代码:

import pygame

pygame.init()

display = pygame.display.set_mode((400, 400))

image = pygame.image.load('test.png') #Use the name of your image
rotated = pygame.transform.rotate(image, 90)

done = False
while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    display.blit(image, (0, 0))
    display.blit(rotated, (100, 0))

    pygame.display.flip()

pygame.quit()

推荐阅读