【问题标题】:Kivy Canvas Alpha IssueKivy Canvas Alpha 版问题
【发布时间】:2025-12-01 16:30:01
【问题描述】:

我注意到在多个小部件的画布上绘制纹理(使用 Rectangle prims)时,一些小部件变得部分透明,从而让后面的图像显示出来。

有没有办法阻止这种行为?

【问题讨论】:

  • 我不熟悉这种行为,你能提供一个最小的可运行示例吗?
  • 没有具体代码。我的应用程序是这样分解的...... 1 个小部件类代表游戏世界。从这个小部件中添加和删除所有其他小部件。创建一个滚动视图来保存游戏世界小部件。我在其他模块中有代表游戏世界对象的小部件类。每个对象类都有自己的一组小部件,可以从它的画布呈现图像。每个图像都使用 io.BytesIO 方法加载并转换为纹理,然后以 texture=bytesimage 的形式绘制到画布的 Rectangle prim。
  • 当我运行我的应用程序时,一些 png 图像是完全透明的,而另一些是透明的。我有一个模块可以在我放大窗口时调整每个小部件的大小,当我放大窗口时,图像的透明渲染似乎会随机播放。一些没有被透视的小部件变成了透视,而其他被透视的小部件不再被透视。 Kivy 1.9.0
  • 补充一下,我不用kv文件,只用python。
  • 似乎与多个 rgba 图像相互重叠或重叠有关。

标签: canvas kivy alpha


【解决方案1】:

原来参与 kivy 开发的某个人破坏了一个处理 rgba 的 mod/dll,同时将小部件的背景属性与图像一起使用。 Canvas 现在是使用 kivy 绘制图形的唯一可靠方法。不要让台式机/笔记本电脑的视觉效果欺骗您。在您使用 kivy 启动器运行您的应用或将其构建到 apk 中之前,您不会看到该问题。

在 Android(不是 ios)上测试。

【讨论】: