我的问题通常是如何使用 X11 或 Gtk 等工具包在 Linux 上创建和定位分层窗口。当我说分层窗口时,我的意思是一个窗口,其形状和透明度由包含 rgb 和 alpha(透明度)通道的像素数据定义。请参阅下面的屏幕截图。
我已经使用足够简单的 UpdateLayeredWindow API 在 Windows 上广泛使用它们,并且想知道如何在 Linux 上做同样的事情。
谢谢。
X11 最初只支持一位透明(需要 SHAPE 扩展,但现在几乎所有 X11 服务器都实现了它)。用途XShapeCombineMask
或gtk_widget_shape_combine_mask
功能。
如果您想要抗锯齿透明度,那么可能最简单的方法是使用 cairo 工具包。一个例子可以在这里找到。
在 X11 中,有两种可能的方法:通过SHAPE扩展进行简单的位图遮罩(甚至适用于非常旧的 X 服务器),或者使用 ARGB 视觉效果和合成器。我在这个答案中提供了在 ARGB 可视窗口上执行 OpenGL 渲染的示例代码:
要在 X11 中使用透明度,您需要