【问题标题】:Can I have a transparent background in my desktop application made with openfl我可以在使用 openfl 制作的桌面应用程序中设置透明背景吗
【发布时间】:2018-02-17 21:47:57
【问题描述】:

我想知道是否有办法将主应用程序窗口背景设置为透明,以便在使用 openfl 为 macOS 和 Windows 构建时可以看到其背后的所有其他应用程序

我的项目文件如下所示。

<?xml version="1.0" encoding="utf-8"?>
<project>

    <meta title="DeskClock" package="com.sample.deskclock" version="1.0.0" company="Company Name" />
    <app main="Main" path="Export" file="DeskClock" />
    <window hardware="true" allow-shaders="true" require-shaders="true" depth-buffer="false" stencil-buffer="false" />

    <window 
    background="0x00000000" 
    fullscreen="false" 
    resizable="false" 
    borderless="true" 
    vsync="true"/>

    <window always-on-top="true" /> 

    <source path="Source" />

    <haxelib name="openfl" />

    <assets path="Assets" rename="assets" />

</project> 

我的主文件看起来像这样。

【问题讨论】:

    标签: windows macos haxe openfl


    【解决方案1】:

    如果您的目标是 Air Desktop,这是可能的,但是性能会受到影响,并且不确定您是否可以使用 Stage GPU 的东西。 我不确定 windows cpp 目标。

    【讨论】:

    • 您对 Air 目标的看法是正确的。我曾经做过AIR开发。我宁愿找到一种使用原生 cpp 的方法。
    【解决方案2】:

    你做得很好,最简单的使用透明度是这样的:

    <window background="null" color-depth="32" />
    

    默认情况下,OpenFL 在 OpenGL 上使用 16 位颜色,没有 alpha,因此color-depth 允许透明背景很重要。

    这将适用于 HTML5,我在 Linux 上测试过,我不相信 SDL 创建的 X11 窗口是透明的,即使边框被隐藏。根据平台的不同,创建本机窗口可能需要做更多的工作。 macOS 或 Windows 可能适用于上述内容。

    【讨论】:

    • 很遗憾,这不适用于 macOS 或 Windows。感谢您对设置的提醒。我能做些什么来帮助将此功能添加到 Native X11 窗口中吗?我真的认为这会为我想要构建的应用程序打开很多可能性。我想为 windows 和 mac 构建一些简单的小部件类型桌面应用程序,我想使用 haxe / openfl 来做到这一点。我认为拥有透明的窗户真的会让事情看起来好多了。
    • 我相信我们的渲染器和我们如何初始化我们的 GL 上下文应该支持透明度,但我可能弄错了。我认为我们现在已经降到了较低的级别,可能会尝试自定义窗口创建代码,SDL_CreateWindowFrom
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多