gpt4 book ai didi

python - 如何在不改变其形状的情况下在pygame中旋转表面

转载 作者:行者123 更新时间:2023-11-28 22:32:24 26 4
gpt4 key购买 nike

我正在 pygame 中编写一个类来创建一个 sprite 对象,我希望能够旋转它。它可以很好地处理图像,并且可以毫无问题地旋转。但是,当旋转具有纯色的表面时,盒子似乎会变大和变小。我知道这是表面改变大小以适应内部矩形顶点的结果,但我该如何阻止它呢?我希望看到视觉旋转。

我已经创建了一些示例代码来展示我面临的问题,运行它会导致框的大小发生简单的变化。

import sys, pygame
from pygame.locals import *

pygame.init()
SCREEN = pygame.display.set_mode((200, 200))
CLOCK = pygame.time.Clock()

surface = pygame.Surface((50 , 50))
surface.fill((0, 0, 0))
rotated_surface = surface
rect = surface.get_rect()
angle = 0

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

SCREEN.fill((255, 255, 255))
angle += 5
rotated_surface = pygame.transform.rotate(surface, angle)
rect = rotated_surface.get_rect(center = (100, 100))
SCREEN.blit(rotated_surface, (rect.x, rect.y))

pygame.display.update()
CLOCK.tick(30)

如何解决这个问题,让表面按照我想要的方式旋转?

如有任何帮助,我们将不胜感激!

最佳答案

您必须创建您创建的 Surface 对象,以它们使用透明度信息的方式标记在显示表面上(也就是说 - 它们必须具有 alpha channel )。

要做到这一点,只需在创建表面对象时传递适当的标志即可 - 只需将其替换为:

surface = pygame.Surface((50 , 50))

与:

surface = pygame.Surface((50 , 50), pygame.SRCALPHA)

它应该可以工作。

关于python - 如何在不改变其形状的情况下在pygame中旋转表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com