【问题标题】:Transparent window in Xwindow parentXwindow 父级中的透明窗口
【发布时间】:2012-05-21 12:12:48
【问题描述】:

我正在尝试在另一个正在运行的应用程序上方创建一个覆盖窗口。 比方说火狐。我通过使用实现 创建窗口

win = XCreateWindow( display, *firefoxwindow,
                   50, 300, 400, 400,
                   0,
                   visualinfo.depth,
                   InputOutput,
                   visualinfo.visual,
                   CWColormap|CWEventMask|CWBackPixmap|CWBorderPixel,
                   &attr
                   ) ;

我使用 XQueryTree() 搜索了 *firefoxwindow

然后按照这段代码 https://gist.github.com/903479

当我使用 XRoot 作为父级时,结果是透明窗口。 但是,当我尝试使用 firefoxwindow 或其他应用程序窗口作为父窗口时,它变得很漂亮。

【问题讨论】:

    标签: overlay x11 transparent xlib


    【解决方案1】:

    在您的情况下,您需要手动将窗口像素图与背景窗口合成。当您创建以根为父的窗口时,透明度由合成窗口管理器处理

    【讨论】:

    • 能否请您多指导我一点,我对这件事很陌生。
    • 使用复合扩展 (freedesktop.org/wiki/Software/CompositeExt),您可以将 copmositing 委托给外部程序,例如将 aplpha 通道视为透明度。非常简单的合成管理器源码:cgit.freedesktop.org/xorg/app/xcompmgr
    • 谢谢安德烈,还有一个问题,您认为是否可以在另一个全屏应用程序之上运行其他应用程序?
    • 通常全屏应用程序只使用非框架窗口(0,0,屏幕宽度,屏幕高度) - 没有魔法。您应该能够在其上重新堆叠窗口
    猜你喜欢
    • 2013-02-21
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    相关资源
    最近更新 更多