我想用 xcb 说明 windows 的伪透明度(在窗口背景上复制根窗口 pixmap 的一部分)
为此,我使用:
根像素图设置为 feh 然后我启动我的程序(只是代码的一部分):
->初始化连接:
xcb_connect()
-> 创建窗口:
xcb_create_window()
xcb_create_pixmap( connection,screen->root_depth, pixmap, screen->root, width, height)
xcb_create_gc( connection, graphic_context, pixmap, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, gc_values_mask)
xcb_map_window
-> 抓取 xcb 事件:
xcb_wait_for_event
->回答map_request_event(当它是我们窗口的请求时)或property_notify(当更改的属性是通过feh的根像素图时):
获取根像素图:
xcb_get_property / xcb_get_property_reply / xcb_get_property_value
==> this works
将根像素图的一部分复制到窗口像素图:
xcb_copy_area_checked(backbone.connection,
rootpix,
pixmap,
graphic_context,
x, y,
0, 0,
width, height)
我使用 xcb_request_check 但似乎我对最后一个请求没有错误。
然后我用 cairo 在我的窗口中绘制元素。
问题是我只看到一个带有 cairo 绘制元素的白色窗口。即使没有 cairo 元素,我也无法显示窗口的复制像素图。
你有什么想法可以帮助我吗?谢谢