Pygame 旋转尺寸问题

Pygame Rotation size issues

我正在尝试旋转图像,使其始终面向鼠标,并且我注意到图像大小在变化。我正在尝试排除故障,但没有运气。我想要一些建议。

这是我正在使用的:

ang = 360 - math.atan2(mousey - 540, mousex - 960) * 180 / math.pi
rotcircle = pygame.transform.scale(pygame.transform.rotate(redcircle,ang), [100, 100])
rect = rotcircle.get_rect(center=(960,540))
screen.blit(rotcircle,rect)

想想吧。例如,如果将图像旋转 45 度,则表面自然必须变大才能容纳角,否则角会超出原始表面的边界。所以,如果你旋转图像,它会变大,正如 documentation 所说:

Unless rotating by 90 degree increments, the image will be padded larger to hold the new size. If the image has pixel alphas, the padded area will be transparent. Otherwise pygame will pick a color that matches the Surface colorkey or the topleft pixel value.

您明确强制表面为 100x100,这意味着图像越接近旋转 45 度(例如,同样),它就会显得越小。简单的解决方案是停止调整图像大小,或者使用另一个足够大的表面来容纳旋转后的图像,然后将旋转后的图像 blit 到它上面。