在pygames中可以扩展图像吗?

2024-05-23 15:40:10 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能在pygame中使用一个事件来触发一个图像?在

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

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


Tags: 图像image链接事件图片load按钮surface
2条回答

有一个解决这个问题的办法,可以让你的眼睛伸展到你想要的确切宽度,但它可能会使眼睛非常变形。。。(没关系,原来的图像有相当畸形的眼睛。)

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

scale(Surface, (width, height), DestSurface = None) -> Surface

我们还使用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))

如果一个图像和一个眼睛被拉伸的话,一个更好。在需要的时候画第二幅图,而不是第一幅图。在

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处理精灵及其行为。在

相关问题 更多 >