2015-11-07 442 views
0

所以使用這裏的代碼Why I set xlib window background transparent failed?我有一個透明的窗口。xlib半透明窗口背景

我想要的雖然是半透明的窗口背景,我怎麼能用c和xlib來做到這一點?

如果有幫助,我使用康普頓合成器作爲我的桌面環境。

+0

剛用一些alpha值繪製背景(請注意,在x中,它是預乘 - https://en.wikipedia.org/wiki/Alpha_compositing#Description)。使用純xlib(無xrender/glx),唯一的選擇是在客戶端上準備32位RGBA數據,然後使用XPutImage調用 –

回答

0

據我所知,在純xlib中做到這一點是不可能的。相反,你需要使用OpenGL和設置明確的顏色爲半透明/ ARGB當你繪製窗口:

glClearColor (0.7, 0.7, 0.7, 0.7); 
glClear (GL_COLOR_BUFFER_BIT); 
glXSwapBuffers (display, win); 
glXWaitGL(); 

這裏有一個例子是如何使用OpenGL繪製Xlib中的窗口:https://gist.github.com/je-so/903479

+0

來吸入窗口或offcxrin pixmap中,否則X中的透明與opengl無關(儘管合成管理器經常使用gl進行硬件加速混合)。完全取決於複合管理器如何處理drawable的RGBA數據。從客戶的角度來看,你只需設置像素的alpha值,沒有魔法(這可以通過xlib,xrender或opengl來實現,也可以通過其他方式實現) –