通过缩放背景图片在 PyGame 中的问题



我试图制作一个以世界地图为背景的游戏。在这个游戏中,用户本可以通过单击鼠标并移动它来缩放图片或拖动图片。首先,我尝试添加缩放功能,但是当用户单击鼠标以缩放图片时,会发生奇怪的事情。图片分为正方形。这是图片和我的代码。 这是图片:[1]: https://i.stack.imgur.com/dQhfX.jpg [1]:

这是发生的事情:https://i.stack.imgur.com/qdlqt.jpg

import pygame
import time
from pygame.locals import *
clock = pygame.time.Clock()
pygame.init()
WHITE = (255, 255, 255)
WIDTH = 1280
HEIGHT = 800
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
img = pygame.image.load("/Users/Esat/Desktop/map.jpg")
img = pygame.transform.scale(img,(WIDTH,HEIGHT))
while True:
events = pygame.event.get()
button_down = pygame.mouse.get_pressed()
if button_down == (1,0,0):
print("Clicked")
WIDTH = WIDTH+10
HEIGHT = HEIGHT+10
img = pygame.transform.scale(img, (WIDTH, HEIGHT))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
windowSurface.fill(WHITE)
windowSurface.blit(img, (0, 0)) 
clock.tick(60)
pygame.display.flip()

当你不断反复更改图像时,事情很快就会变得时髦。我发现最好保留原件的副本,并根据该副本进行所有比例更改。以下是您的代码修复:

import pygame
import time
from pygame.locals import *
clock = pygame.time.Clock()
pygame.init()
WHITE = (255, 255, 255)
WIDTH = 1280
HEIGHT = 800
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
originalImg = pygame.image.load("map.jpg")
img = pygame.transform.scale(originalImg,(WIDTH,HEIGHT))
while True:
events = pygame.event.get()
button_down = pygame.mouse.get_pressed()
if button_down == (1,0,0):
#print("Clicked")
WIDTH = WIDTH+10
HEIGHT = HEIGHT+10
img = pygame.transform.scale(originalImg, (WIDTH, HEIGHT))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
windowSurface.fill(WHITE)
windowSurface.blit(img, (0, 0)) 
clock.tick(60)
pygame.display.flip()

最新更新