我尝试通过在图像上移动鼠标来放大图像,并在远离图像时将其调整为原始大小。 例如:
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次后,图像变得怪异了。 我该如何解决这个问题?
答案 0 :(得分:0)
某些变换被认为具有破坏性。这意味着每一个 他们执行的时间会丢失像素数据。这方面的常见例子 正在调整大小和旋转。因此,最好是 重新转换原始表面,而不是继续转换图像 多次。 (例如,假设您正在为弹跳动画制作动画 弹簧膨胀和收缩。如果您应用了尺寸更改 逐渐增加到以前的图像,你会失去细节。代替, 始终以原始图像开始并缩放到所需大小。)
直接来自pygame.transform documentation
解决方法
每次都不要更改原始图像。相反,每次碰撞只是在旧图像的顶部显示一个新图像(因为它是一个较大的图像,旧的图像将不会显示)。或者,您可以隐藏旧图像。
示例:
if ImageRect.collidepoint(mouseX,mouseY):
Image2 = pygame.transform.scale(Image, (100,100))