当前位置: 首页 > 知识库问答 >
问题:

Pygame表面具有alpha非光点透明

艾令秋
2023-03-14

当鼠标不悬停在游戏中时,我试图使游戏中的用户界面透明。但出于某种原因,当我设置图像的alpha值使其变为透明时,什么也没有发生。下面是一些可运行的代码,它复制了问题:

import pygame
WHITE = (255, 255, 255)

class UI:
    def __init__(self):
        self.img = pygame.image.load("ink_bar_solid.png")
        self.img.set_alpha(0)
        self.ink_bar_rect = self.img.get_bounding_rect()
        self.x, self.y = 0, 10

resolution = (500, 500)
screen = pygame.display.set_mode(resolution)
mouse = pygame.mouse.get_pos
ink_bar = UI()
run = True

def mouse_over():
    if ink_bar.ink_bar_rect.collidepoint(mouse()):
        ink_bar.img.set_alpha(255)
    else:
        ink_bar.img.set_alpha(0)

while run:
    mouse_over()
    screen.fill(WHITE)
    screen.blit(ink_bar.img, (ink_bar.x, ink_bar.y))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            break
    pygame.display.flip()
pygame.quit()

任何帮助都非常感谢!编辑:我收到了一个评论,有人说他们使用了自己的图像,效果很好...当我执行程序时,我会收到这个警告:

libpng warning: iCCP: known incorrect sRGB profile

是因为我的文件,所以不能正常运行的原因吗?

共有1个答案

长孙深
2023-03-14

set_alpha方法似乎不适用于未转换的png文件。调用转换方法也会大大提高bite性能:

self.img = pygame.image.load("ink_bar_solid.png").convert()

它也不适用于每个像素的alpha曲面(用convert_alpha转换的曲面或用pyplay创建的曲面。SRCALPHA标志)。每个像素表面的alpha可以通过填充透明的白色并传递pyplay来改变。BLEND_RGBA_MULT特殊标志,例如:

image = pygame.image.load('an_image.png').convert_alpha()
# Make a copy so that the original doesn't get modified.
transparent_image = image.copy()
transparent_image.fill((255, 255, 255, 100), special_flags=pygame.BLEND_RGBA_MULT)
 类似资料:
  • 问题内容: 我有一张桌子,看起来像 而且我知道每个测试最多可以有3个,所以我想创建一个看起来像 我环顾四周,似乎需要使用PIVOT表。唯一的问题是,我找到了使用序数变量创建列的示例。在这种情况下,我具有预定义数量的可能列(3)。有任何想法吗? 问题答案: 不需要多个自联接的解决方案: 您可以根据分析函数的结果获取所需的输出: 输出 : 或者,仅使用聚合函数:

  • 问题内容: 我用来渲染一些文本。我希望文本是半透明的,即具有不为255的alpha值,因此我尝试传递带有alpha值的color参数(例如)作为color参数,但是它没有任何作用。我也尝试在生成的Surface对象上使用,但这也没有执行任何操作。有任何想法吗? 问题答案: 使用模块时,渲染文本时不会考虑文本颜色的Alpha通道,但请参见: 抗锯齿图像被渲染为24位RGB图像。如果背景是透明的,则将

  • 我知道我可以用以下方式制作一个带有透明背景的png图(这对我很有用): 但是我怎样才能使背景半透明,带有分数阿尔法数?我在另一个博客上读到,人们可以这样做: 但这对我不起作用,产生了一个没有透明度的情节,给了我这个不透明的png(在ppt中得到证实)。 针对这些评论, 给我MacOSX,我就上了 Python 3.9。4(默认值,4月5日2021,01:49 30)[CLAN120.0(CLAN-

  • 问题内容: 我在做一个函数,它接受一个字符串,把它分成几行 返回一个曲面,其中每一行渲染在前一行的下方。 例如: 渲染为: 不管怎样,我的问题是我不能返回一个完全透明的表面 调用函数。我试过使用颜色键,但它不适用于 抗锯齿文本。有办法吗?谢谢你的回答。 我的代码:(当前在文本周围留下一个丑陋的紫色阴影) 问题答案: 发布了第二个答案,因为这更复杂,人们可能想看看 两者都有 , decrease/i

  • 20220827  一面 服务端开发工程师(C++/PHP/Go方向),大意了,以为跟C++有关,面下来发现还是数据库那一套东西,这是一篇没有营养的面经 总体来说,面试体验极差,不是科班出身确实难,被嘲讽了一波,然后果不其然面完就被挂了,也主要是个人原因吧,平时主要是嵌入式软件开发,跟互联网确实差的多,项目相关性不大,还被diss了,惨被蹂躏,心情确实有点低落,不会的东西太多,也就挑了几个会的问吧

  • 本文向大家介绍Android 颜色透明度(Alpha)级别,包括了Android 颜色透明度(Alpha)级别的使用技巧和注意事项,需要的朋友参考一下 示例 十六进制不透明度值 如果要将45%设置为红色。 红色的十六进制值-#FF0000 您可以在前缀中添加73以实现45%的不透明度-#73FF0000