【发布时间】:2016-04-08 23:15:45
【问题描述】:
在 pygame 中,我对程序中的所有矩形都使用 pygame.draw.rect(screen, color, rectangle)。我希望能够将这些矩形旋转到任何角度。我看过以下代码来旋转 IMAGES,但我的问题是 RECTANGLES。
pygame.transform.rotate(image, angle)
但我正在使用矩形,我没有可以旋转的图像或“表面”。当我尝试用
旋转一个矩形时rect = pygame.draw.rect(screen, self.color, self.get_rectang())
rotatedRect = pygame.transform.rotate(rect, self.rotation)
screen.blit(rotatedRect)
这使得TypeError: must be pygame.Surface, not pygame.Rect 与 .rotate() 一致
我的问题是,如何在 pygame 中旋转并显示 RECTANGLE(x,y,w,h),而不是图像。
这是“潜在重复”的链接帖子不是重复的。一个答案解释了旋转矩形的后果,另一个使用代码来旋转图像。
【问题讨论】:
-
您可以像这样自己旋转 4 个点中的每一个
x2= cos a * x1 - sin a y1y2= sin a *x1 + cos a y1,但是 rectangle 函数可能只绘制一个与轴对齐的矩形,所以你必须看用于多边形绘图功能。或者,您可以制作带有可见轮廓和透明填充 (alpha) 的surface,这可能更容易。 rectangle 可能只是 pygame 中的辅助函数,不能直接显示,所以最后一行有两个单独的问题。 -
我在发布我的问题之前阅读了这一点。这不是重复的,看看答案,他们解释了如何旋转图像。这是来自
image2 = pygame.transform.rotate(image1, angle)答案之一的引述,而接受的答案并没有解释任何关于实际旋转矩形的内容,只是一些意想不到的后果 -
@roadrunner66 我希望我能够避免在多边形中进行三角和绘图点,但我很欣赏这个建议,如果没有更简单的方法,我会这样做
-
问题是重复的,因为您无法旋转矩形。您必须创建一个透明的 Surface 并旋转 Surface。
标签: python rotation pygame rectangles