如何在pygame中旋转图像,同时保持其位置?

时间:2017-09-25 17:55:30

标签: python-3.x rotation pygame

我试图在保持其中心位置的同时旋转图像。我已经尝试过按照其他问题提出的指示,但它似乎没有我遇到的完全相同的问题。

当我旋转图像时,它从中心旋转,但中心位置似乎发生变化,看起来好像我的图像在旋转时上下反弹。

这是代码:

import pygame
import sys
import math

pygame.init()

screen = pygame.display.set_mode((800,600))

img_load = pygame.image.load("img/test.png")
img = pygame.transform.scale(img_load,(40,40))
bg = pygame.image.load("img/bgblack.png")

img_x = 300
img_y = 300

while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    m_x,m_y = pygame.mouse.get_pos()

    radians = math.atan2(m_y - img_y, m_x - img_x)
    degrees = math.degrees(radians)

    img_center = img.get_rect().center
    rot_img = pygame.transform.rotate(img,-degrees) 
    rot_img.get_rect().center = img_center

    screen.blit(bg,(0,0))
    screen.blit(rot_img,(img_x,img_y))

    pygame.display.update()

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

只需致电rect = rot_img.get_rect(center=(img_x, img_y)),您就会得到一个可用作blit位置的矩形。 center=(img_x, img_y)参数将rect的中心设置为所需的坐标。

m_x,m_y = pygame.mouse.get_pos()

radians = math.atan2(m_y - img_y, m_x - img_x)
degrees = math.degrees(radians)

rot_img = pygame.transform.rotate(img, -degrees) 
rect = rot_img.get_rect(center=(img_x, img_y))

screen.blit(bg,(0,0))
screen.blit(rot_img, rect)