So I have remade my program to rotate and put images in a list, the image rotates, but does not do so centered. The image rotation looks like it is bouncing back and forth between the top left and bottom right corners.
I want the image to rotate in the center of the screen, on the center of the rotated images rectangle.
I recently found this video and tried to implement centered rotation with no luck: 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))