Pygame 表面的 alpha 不影响透明度

2024-01-11

当鼠标未悬停在游戏中时,我试图使用户界面事物变得透明。但由于某种原因,当我设置图像的 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

是因为我的文件而导致它无法正确传输的原因吗?


The set_alpha该方法似乎不适用于未转换的 png 文件。呼叫convert http://www.pygame.org/docs/ref/surface.html#pygame.Surface.convert方法还将显着提高 blit 性能:

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

它也不适用于每像素 alpha 表面(用convert_alpha或用创建pygame.SRCALPHA旗帜)。每像素表面的 alpha 值可以通过用透明白色填充并传递pygame.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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame 表面的 alpha 不影响透明度 的相关文章

随机推荐

  • 如何在 Android 中自定义 Spinner

    我想将自定义高度添加到下拉列表中Spinner 比如说 30dp 我想隐藏下拉列表的分隔线Spinner 到目前为止 我尝试将以下样式实现为Spinner
  • 如何在 Zend Framework 中创建模块化 MVC 组件

    我在 Zend Framework 应用程序中创建模块化可重用组件时遇到问题 在本例中 我指的不是 Zend Framework 模块 而是拥有可重用 MVC 小部件的能力 如果您愿意 我遇到的问题可能对于我的实现来说非常特殊 但如果有人能
  • Airflow - 从 dag 上下文回调中解析任务 ID

    起初与dag callback on failure callback and on success callback 我以为这会触发success or fail状态时dag完成 如 dag 中所定义 但随后它似乎每次都会被实例化task
  • Matplotlib 提供的seaborn 样式自 3.6 起已弃用

    Matplotlib 提供的seaborn 样式自 3 6 起已弃用 因为它们不再对应于seaborn 发布的样式 但是 它们仍将以 seaborn v0 8 rdquo 24418 24335 25552 20379 12290 2511
  • 适用于 Android Studio 的 Google Play 服务版本

    我正在从 Eclipse 切换到 Android Studio 在 Eclipse 中将 GPServices 添加到我的项目中非常简单 只需确保在 SDK 管理器中安装了最新的 SDK 并将库从 SDK 包复制到我的工作区即可 使用 AS
  • 为每个左连接行匹配重复所有基表行

    我无法简洁地描述我需要什么 因此感谢任何编辑标题的帮助 我有 3 张表 Jobs has JobID PK JobsDetail has JobID FK and DepartmentsID FK Departments has Depar
  • 如何使用 dojo create 创建 div?

    我想通过 dojo create 从此示例生成 divNodes0 div 包括 h1 和 ul div div style background color d0d0d0 h1 h1 ul ul div div
  • Kotlin 用子类型覆盖 fun

    我在继承包含基类型的方法 乐趣的接口时遇到问题 我想将其重写为实现它的类中的子类型 到目前为止我已经有了界面 interface IModel fun convert dataModel BaseDataModel 以及实现它的类 clas
  • 如何使用命令行编译WPF程序?

    我需要使用命令行 C 编译器 即csc exe 问题是错误CS0103 编译器说没有InitializeComponent 我的程序中的方法 但这是错误的 因为我添加了 System Xaml dll 有人知道如何解决这个问题吗 使用 MS
  • Rails Engine - Gems 依赖项,如何将它们加载到应用程序中?

    我在这里做一个引擎 它独立工作正常 当我将其转换为 gem 并将其加载到另一个应用程序中时 我收到许多未定义的错误 这些错误来自我的引擎 gem 的依赖项 这是宝石规格 s add dependency paperclip s add de
  • 如何在引导程序中将图像放在图像上;

    我需要将一个图像放在另一个图像上 这是我的代码
  • 找不到方法compile()

    我想在 android studio 中添加一个 lib 但它不起作用 这是一个屏幕截图 我还尝试在 gradle build 中添加依赖项 但这也不起作用 也许是因为我在代理后面 You 使用错误 build gradle file 你不
  • 基于 OWIN 在 MVC 5 中为多个 Web 应用程序设置表单身份验证

    我正在设置我的第一个 MVC Web 应用程序 我知道我需要提供基于表单的身份验证模型 并且我也知道我也会将其重用于多个其他内部 Web 应用程序 我相信 MVC 5 身份验证的所有文档都基于 OWIN 内容 并且使用 EF Code Fi
  • 如何更改 Windows 服务的名称?

    我有一个用 C 开发的 Windows 服务应用程序 相同的服务需要使用不同的配置文件来运行 要在同一台计算机上运行这些服务 我需要更改服务的名称 我可以创建解决方案的多个副本 但不确定如何更改服务的名称 Thanks 在您的 win 服务
  • 在 Powershell 中创建表

    伙计们 我有一个查询远程计算机中的服务的脚本 它运行 2 个嵌套的 foreach 循环 其中 1 个用于计算机列表 内部一个用于服务列表 我想在二维数组中捕获该过程的输出 The desired output should be like
  • Node.js 猫鼬性能

    有人有使用 mongoose js 作为大规模 Mongodb 的 Node js 映射器的经验吗 我想知道是否应该使用本机驱动程序 因此我将所有内容保持轻量级或编写一个简单的包装器 如果有人有任何提示 请建议 非常感谢 参加聚会有点晚了
  • 如何订购字母列表(“a”、“b”、“c”、...、“z”、“aa”、“ab”)?在这种情况下,String#succ 和 <=> 似乎不能很好地协同工作

    我的一个对象 item 有一个 ID letter id 格式为 a b aa ab 等 为了生成它 我使用 ruby 的String succ在这样的实例方法中 def set letter id last parent items al
  • 日期之间的天数(不包括周末和节假日)

    有没有办法在不创建新表或视图的情况下计算 PostgreSQL 中两个日期之间的天数 不包括周末和特定假期 我只有数据库的读取权限 因此无法创建 假日 表或视图 我正在考虑使用generate series函数 但假期并不遵循特定的模式 因
  • Junit 5 和 IntelliJ“未找到测试”

    问答式问题 因为现有问题与我在此处所做的简单拼写错误不符 Goal 使用 UI 通过 IntelliJ IDE 执行简单的 JUnit 测试 右键单击 运行测试 Problem IntelliJ 表示 未找到测试 Code import o
  • Pygame 表面的 alpha 不影响透明度

    当鼠标未悬停在游戏中时 我试图使用户界面事物变得透明 但由于某种原因 当我设置图像的 alpha 值使其变得透明时 什么也没有发生 这是一些可复制该问题的可运行代码 import pygame WHITE 255 255 255 class