所以我重新制作了我的程序来旋转并把图像放到一个列表中,图像会旋转,但不会居中旋转。图像旋转看起来像是在左上角和右下角之间来回反弹
我希望图像在屏幕中心旋转,在旋转图像矩形的中心
我最近发现了这个视频,并试图实现中心旋转没有运气: https://www.youtube.com/watch?v=ia7Syd2Zjn4
def loadImage(self):
#load image file
imagePath = filedialog.askopenfilename()
self.userImage = pygame.image.load(imagePath).convert_alpha()
# calculate scaled image size
scaledImage = self.scale * self.userImage.get_height()
self.userImage = pygame.transform.scale(self.userImage, (scaledImage, scaledImage))
# create list for rotated images
self.cells = []
for i in range(360):
# starting rect size
self.rect = pygame.Rect(0, 0, scaledImage, scaledImage)
#
self.processedImage = pygame.Surface(self.rect.size).convert()
self.processedImage.set_colorkey([0, 0, 0])
# old center position
previousCenter = self.rect.center
# rotate image
self.rotatedImage = pygame.transform.rotate(self.userImage, i)
self.rect = self.userImage.get_rect()
self.rect.center = previousCenter
rect = self.rotatedImage.get_rect()
# add rotated images to list
self.cells.append(self.rotatedImage)
print('Cell', i, self.cells[i])
i += 1
def drawImage(self):
clock = pygame.time.Clock()
i = 0
while True:
thisIm = self.cells[i]
print(thisIm)
# rotation speed
clock.tick(20)
# screen position for image
drawPos = (self.windowWidth // 2, self.windowWidth // 2)
# screen blit
self.mainWindow.blit(self.cells[i], drawPos)
pygame.display.flip()
# increment rotation and limit rotation to 360 degrees
i += 1
i %= 360
# clear
self.mainWindow.fill((0, 0, 0))
当你设置模式,然后你得到表面,你可以得到它的矩形
要使屏幕上的图像居中,可以获取其矩形,并将中心或屏幕矩形指定给图像矩形的中心
类似的方法,你可以保持图像的位置,当你旋转它。你必须得到它的中心从原始图像和指定旋转图像
它只能在图像是规则的并且在图像中心有真实的旋转点时工作
以类似的方式,您可以将文本置于矩形的中心来创建按钮
相关问题 更多 >
编程相关推荐