繁体   English   中英

pygame:如何使图像的矩形与backgroud透明或相同颜色?

[英]pygame:How to make the rect of an image transparent or the same color with backgroud?

我今天才开始使用pygame,遇到了一些麻烦。 我旋转了汽车图像,但似乎矩形区域不完全适合该图像(如图所示,白色区域大于我旋转的图像)。

可以使矩形区域的颜色透明或与背景相同,以便图像看起来更好吗?

谢谢

汽车形象

您好,这是我关注的代码(摘自Richard Jones的“ Python快速游戏开发”):

class CarSprite(pygame.sprite.Sprite):
    MAX_FORWARD_SPEED = 10
    MAX_REVERSE_SPEED = 10
    ACCELERATION = 2
    TURN_SPEED = 5

    def __init__(self, image, position):
        pygame.sprite.Sprite.__init__(self)
        self.src_image = pygame.image.load(image)
        self.src_image = self.src_image.convert()
        self.position = position
        self.speed = self.direction = 0
        self.k_left = self.k_right = self.k_down = self.k_up = 0
        self.rect = self.src_image.get_rect()
        self.rect.center = position

    def update(self, deltat):
        # SIMULATION
        self.speed += (self.k_up + self.k_down)
        if self.speed > self.MAX_FORWARD_SPEED:
            self.speed = self.MAX_FORWARD_SPEED
        if self.speed <-self.MAX_REVERSE_SPEED:
            self.speed = -self.MAX_REVERSE_SPEED
        self.direction += (self.k_right + self.k_left)
        x, y = self.position
        rad = self.direction * math.pi / 180
        x += -self.speed*math.sin(rad)
        y += -self.speed*math.cos(rad)
        self.position = (x, y)
        self.image = pygame.transform.rotate(self.src_image, self.direction)
        self.rect = self.image.get_rect()
        self.rect.center = self.position

    def draw(self,screen):
        self.image.set_alpha(150)
        screen.blit(self.image, self.rect)

由于某种原因我看不到图像,但是我想您想要的是

Surface.set_colorkey(Color, flags=0)

如果输入背景色,则背景(背景)将变为透明。 另一个很酷的事情是,如果您在旋转汽车之前设置了colorkey,背景将自动变为您将colorkey设置为的颜色。

请注意。 如果要从外部来源导入图像,请确保在设置colorkey之前先执行image=image.convert()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM