我的问题是如何在Linux上使用X11或某些工具包(如Gtk)创建和定位分层窗口。当我说分层窗口时,我的意思是一个窗口,其形状和透明度由包含rgb和alpha(透明度)通道的像素数据定义。请参阅下面的截图。在Linux上创建一个分层窗口X11/Gtk
我已经在Windows上使用了足够简单的UpdateLayeredWindow API,并且想知道如何在Linux上做同样的事情。
谢谢。
我的问题是如何在Linux上使用X11或某些工具包(如Gtk)创建和定位分层窗口。当我说分层窗口时,我的意思是一个窗口,其形状和透明度由包含rgb和alpha(透明度)通道的像素数据定义。请参阅下面的截图。在Linux上创建一个分层窗口X11/Gtk
我已经在Windows上使用了足够简单的UpdateLayeredWindow API,并且想知道如何在Linux上做同样的事情。
谢谢。
X11最初只支持一位透明度(需要的形状扩展,但这些天几乎所有的X11服务器上实现它)。使用XShapeCombineMask
或gtk_widget_shape_combine_mask
函数。
如果你想抗锯齿的透明度,那么可能是最简单的方法是使用开罗工具包。一个例子可以发现here。
要使用的透明度在X11,你需要
在X11有两种可能的方法:通过SHAPE扩展简单的位图掩码(即使是很老的X服务器协同工作),或使用ARGB视觉效果和合成。我在这个答案中提供了在ARGB可视窗口上执行OpenGL渲染的示例代码: