如何在 Pygame 中更改图像的不透明度[重复]

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

我尝试在 Pygame 中显示图像,但我想更改它的不透明度。 该游戏是一款卡片记忆游戏,对于主页背景,我希望是一个包含一些卡片的暗屏,具有不同的位置、大小、旋转角度和不透明度。 图像是一张带有问号的简单卡片,这意味着另一面的图像是一个谜。 图像实际图像为 35x70。

每次我想改变不透明度时我都做不到。

我尝试了更多方法:

import pygame 
from PIL import Image as Img
pygame.init()


class Image:
    def __init__(self,image_path : str, size : tuple, rotation_angle : int, position : list, screen : object, opacity = 255) -> None:
        self.size = size 
        self.rotation_angle = rotation_angle
        self.position = position
        self.screen = screen 
        self.opacity = opacity

        # initiate image & its properties

        # Initiate the image and convert it.
        self.image = pygame.image.load(image_path).convert_alpha() 
        self.get_position()
        #if self.rotation_angle:
            #self.image = pygame.transform.rotate(self.image,self.rotation_angle)



    """ Set the position. The position could be a string or int. If the pos[0] or pos[1] is a 
    string, the only possible it that the horizontal/vertical pos is in the center otherwise
    it should be an integer with the position """

    def get_position(self) -> None:

        if self.position[0] == "center":
            self.position[0] = self.screen.get_size()[0] // 2 - self.image.get_size()[0] // 2
        if self.position[0] != "center":
            self.position[0] = int(self.position[0])


        if self.position[1] == "center":
            self.position[1] = self.screen.get_size()[1] // 2 - self.image.get_size()[1] // 2
        if self.position[1] != "center":
            self.position[1] = int(self.position[1])

    
    def display_image(self) -> None:
        self.image.set_alpha(self.opacity)
        self.screen.blit(self.image,self.position)

每次我尝试这种方式时,都会显示一些奇怪的东西。图像不透明度的一半似乎适用,但另一侧不透明度仍然保持 255。

我也尝试过使用PIL,生成的图像很好,不透明度适用于整个图像,但是当我尝试显示它时,不透明度仍然是255。

python image-processing pygame python-imaging-library png
1个回答
0
投票

您可以使用set_alpha命令。链接在这里 https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha.

请记住该值是从 0 到 255。(255 是完全不透明,0 是透明)

self.image.set_alpha(opacity)
© www.soinside.com 2019 - 2024. All rights reserved.