python - 当我使用 pygame.transform.rotate() 时,它会移动我的图像,这样,如果连续使用,它将离开屏幕。为什么?

标签 python pygame transformation

所以我加载了一个图像,然后对其进行旋转。然而,当我运行该程序时,它就滑出了屏幕。为什么?

import pygame, sys




def rotate45(gameObject):
    newObject = pygame.transform.rotate(gameObject, 45)
    return newObject

def main():
    pygame.init()
    screen = pygame.display.set_mode((800,600))
    Tardis = pygame.image.load("Tardis.bmp")
    Tardis.set_colorkey((255, 0, 0))









    while True:

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

        screen.fill( (0,0,0) )

        Tardis = rotate45(Tardis)

        screen.blit(Tardis, (400,300))

        pygame.display.update()

有人可以帮忙吗?如果您需要知道的话,我的图像是 75 x 134。

我是编程新手,但我不知道为什么会发生这种情况。

最佳答案

就像 @cmd 所说,旋转 变换会改变对象的尺寸。保存原始对象并继续将更改后的变换应用到原始对象。下面是一个例子:

import pygame
import sys
import time

def rotate45(gameObject, rotations={}):
    r = rotations.get(gameObject,0) + 45
    rotations[gameObject] = r
    return pygame.transform.rotate(gameObject, r)

def main():
    pygame.init()
    screen = pygame.display.set_mode((800,600))
    Tardis = pygame.image.load("Tardis.bmp")
    Tardis.set_colorkey((255, 0, 0))

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        screen.fill( (0,0,0) )
        rotatedTardis = rotate45(Tardis)
        screen.blit(rotatedTardis, (400,300))
        pygame.display.update()
        time.sleep(1)

main()

关于python - 当我使用 pygame.transform.rotate() 时,它会移动我的图像,这样,如果连续使用,它将离开屏幕。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25434990/

相关文章:

python - 从 HTML 中提取数据

python - 在 python 中进行单元测试?

python - 使用 pandas 计算当月的总事件

python - 在 Python 中重现随机生成关卡的最简单方法是什么?

python - PyOpenGL、Pygame 和着色器似乎不合作

algorithm - 转换列表的平均转换矩阵

c++ - 获取旋转顶点的当前顶点位置

python - 如何使用 python 或 shell 比较两个文件时获取完整行

Python 库 - json 到 json 的转换

python - 如何将 pygame 窗口固定在顶部?