Pygame的缩放问题
当我尝试放大一个物体时,只有图像的顶部和左边变大了,其余部分却没有变化。我想要的是均匀放大。
import pygame._view
import pygame, sys
from pygame.locals import *
import random
pygame.init()
barrel = pygame.image.load("images\Barrel.gif")
barrelx = 0
barrely = 0
while running:
barrel = pygame.transform.scale(barrel, (int(barrely/4), int(barrely/4)))
screen.blit(barrel, (barrelx, barrely))
barrely这个东西的大小总是变大(数字上),直到它跑到屏幕外面。我是在Windows XP上用Python 2.7。
4 个回答
0
那应该是:
import pygame._view
import pygame, sys
from pygame.locals import *
import random
pygame.init()
barrel = pygame.image.load("images\Barrel.gif")
barrelx = 0
barrely = 0
while running:
barrel = pygame.transform.scale(barrel, (int(barrelx/4), int(barrely/4)))
screen.blit(barrel, (barrelx, barrely))
在你的代码中,你给了barrely作为pygame.transform.scale()的宽度和高度。
另外,我看不出你在哪里更新barrelx和barrely。在你粘贴的代码中,barrelx和barrely将始终是0。
1
“图像的顶部和左侧变大”是说图像的中间部分不会变大,而左上角的位置始终保持不变,对吗?如果我理解得没错,你可以试试这个:
import pygame._view
import pygame, sys
from pygame.locals import *
import random
pygame.init()
barrel1 = pygame.image.load("images\Barrel.gif")
barrel1x = 0
barrel1y = 0
#get width,height of image
width1,height1 = barrel1.get_size()
running = True
while running:
barrel2 = pygame.transform.scale(barrel1, (int(barrely/4), int(barrely/4)))
width2,height2 = barrel2.get_size()
#position - difference of width or height /2
screen.blit(barrel, [round(barrelx - (width1 - width2)/2),
round(barrely - (height1 - height2)/2)])
1
我找到了问题所在!我写程序的方式导致新的桶的图像一直被重复使用。所以,在我显示桶的图像之后,我在最后加上了:
while running:
...
barrel = pygame.transform.scale(barrel, (init(barrely/4),init(barrely/4)))
screen.blit(barrel, (barrelx, barrely))
barrel = pygame.image.load("images\Barrel.gif")
这样一来,当缩放变量变化时,它会影响到一个新的图像,而不是一个被修改过的图像。