Pygame在缩放后重置图像

时间:2016-08-17 17:46:19

标签: python image pygame mouse

我尝试通过在图像上移动鼠标来放大图像,并在远离图像时将其调整为原始大小。 例如:

if ImageRect.collidepoint(mouseX,mouseY):
     Image = pygame.transform.scale(Image, (100,100))
else:
     Image = pygame.transform.scale(Image, (64,64)) #actual size of Image

但是将鼠标移动10次后,图像变得怪异了。 我该如何解决这个问题?

This is how it looks

1 个答案:

答案 0 :(得分:0)

  

某些变换被认为具有破坏性。这意味着每一个   他们执行的时间会丢失像素数据。这方面的常见例子   正在调整大小和旋转。因此,最好是   重新转换原始表面,而不是继续转换图像   多次。 (例如,假设您正在为弹跳动画制作动画   弹簧膨胀和收缩。如果您应用了尺寸更改   逐渐增加到以前的图像,你会失去细节。代替,   始终以原始图像开始并缩放到所需大小。)

直接来自pygame.transform documentation

解决方法

每次都不要更改原始图像。相反,每次碰撞只是在旧图像的顶部显示一个新图像(因为它是一个较大的图像,旧的图像将不会显示)。或者,您可以隐藏旧图像。

示例:

if ImageRect.collidepoint(mouseX,mouseY):
     Image2 = pygame.transform.scale(Image, (100,100))