是否可以在pygames中拉伸图像?

时间:2015-12-12 08:04:28

标签: python pygame

是否可以使用事件触发pygame中的图像?

就像说我有一个人,我希望他的眼睛像这样突然出现 enter image description here   当我按下按钮而我正在使用surface.blit(eyes=pygame.image.load('eyes'))用于眼睛。

我可以像这个链接中的图片那样拉伸眼睛图像吗?

2 个答案:

答案 0 :(得分:0)

更好的方法是将两张图像分别用于实际图像,另一张图像用于拉伸眼睛。在需要时绘制第二个图像而不是第一个图像。

runner1.jpg

runner2.jpg

import pygame
from pygame.locals import *

screen = pygame.display.set_mode((540, 480))
runner1 = pygame.image.load('./runner1.jpg').convert()
runner1_rect = runner1.get_rect(center=(270, 240))
runner2 = pygame.image.load('./runner2.jpg').convert()
runner2_rect = runner2.get_rect(center=(270, 240))
screen.fill((0, 0, 0))
change = True
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
        if event.type == MOUSEBUTTONDOWN:
            screen.blit(runner2, runner2_rect)
            pygame.display.update()
        if event.type == KEYDOWN:
            screen.blit(runner1, runner1_rect)
            pygame.display.update()

如上例所示,我们得到不同姿势的图像(精灵)并在我们需要动作时播放它们。

开始并理解pygame从PUMMEL THE CHIMP开始,并且有很好的API可以通过pygame来处理sprite及其行为。

答案 1 :(得分:0)

这个问题有一个解决方案可以让你将眼睛拉伸到你想要的确切宽度,但它可能会使眼睛变形......(不管怎样,原始图像眼睛的眼睛已经变形了。)

来自pygame.transform.scale上的Pygame文档:

  

比例(表面,(宽度,高度),DestSurface =无) - >表面

我们还使用image。get_height(),因此用户无需自己获取高度。

所以你会做这样的事情(包裹在一个函数中):

def stretchEyes(image, newWidth):
    return pygame.transform.scale(image, (image.get_height(), newWidth))

eyes = stretchEyes(eyes, image.get_width()*3) # Stretch to three times width
# Blitting takes in the top left position, so we don't need to do any maths here!
screen.blit(eyes, (x,y))