在pygame中操作矩形图像大小

问题描述 投票:1回答:1

我对pygame相当陌生,正在开发我的第一款游戏。 (对不起,如果我问一个愚蠢的问题)我试图使游戏的标题像呼吸效果一样缓慢地增加和减小大小,以使主屏幕在视觉上更具吸引力。

这里是我要导入图像的内容:

name = self.dir_path + "pixeltitle.png"
self.pixeltitle = pg.image.load(name)
self.pixeltitlerect = self.pixeltitle.get_rect()
self.pixeltitlerect.center = (250,120)
self.screen.blit(self.pixeltitle,self.pixeltitlerect)

我有一个while循环,其中我在增加rect的大小,但是它会向右和向下移动。有什么方法可以增加尺寸并使直肠的中心保持在同一位置吗?还有没有办法使大小的增加/减少更平滑?这是其余的代码:

clicked = False
        grow = 0
        mode = 'grow'
        while not clicked:
            if grow>40:
                mode = 'shrink'
            if grow<1:
                mode = 'grow'
                self.pixeltitle = pg.transform.scale(self.pixeltitle,(400,400))


            if mode == 'grow':
                grow+=1
            else:
                grow-=1

            xsize=400+int(grow)
            ysize=400+int(grow)

            self.pixeltitle = pg.transform.scale(self.pixeltitle,(xsize,ysize))
            self.pixeltitlerect.center = (250,120)
            self.screen.blit(self.pixeltitle,self.pixeltitlerect)
            pg.display.flip()
python pygame shapes rect
1个回答
1
投票

缩放表面后,您错过了更新self.pixeltitlerect的大小:

self.pixeltitle = pg.transform.scale(self.pixeltitle,(xsize,ysize))

# size of surface has been changed get the new rectangle
self.pixeltitlerect = self.pixeltitle.get_rect()

self.pixeltitlerect.center = (250,120)
self.screen.blit(self.pixeltitle,self.pixeltitlerect)

或更短(请参见pygame.Surface.get_rect()):

pygame.Surface.get_rect()

不缩放原始Surface。如果原始的Surface缩放了比例,它将变形。保留原始图像self.pixeltitle = pg.transform.scale(self.pixeltitle,(xsize,ysize)) self.pixeltitlerect = self.pixeltitle.get_rect(center = (250,120)) self.screen.blit(self.pixeltitle,self.pixeltitlerect) 并缩放原始图像:

self.pixeltitleorig

请参见示例:

self.pixeltitle = pygame.transform.scale(self.pixeltitleorig,(xsize,ysize))

© www.soinside.com 2019 - 2024. All rights reserved.