2012-04-06 2 views
0
내가 XCB와 윈도우의 의사 투명성을 설명 할

은 (창 배경에 루트 창 픽스맵의 일부를 복사)이 들어XCB 나는, 의사 투명성 (어린이 창 배경에 대한 루트 창 픽스맵의 사본)

을 설명 사용 :

루트 픽스맵은 다음 내가 내 programm에 (코드의 한 부분) 시작 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 

- 또는 property_notify (그것은 우리의 윈도우의 요청 때)> map_request_event에 대한 답변 (변경 속성입니다 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를 사용하지만, 나는이 마지막 요청에 오류가없는 것으로 보인다.

그런 다음 카이로를 사용하여 창에 요소를 그립니다.

문제는 카이로에 의해 요소 그리기가있는 흰색 창이 보입니다. 카이로 요소가 없어도 복사 한 창 이미지를 표시 할 수 없습니다.

나를 도울 생각이 있습니까? 감사

답변

2

아무도 나에게 도움이 없기 때문에, 나는 찾아 혼자 솔루션 :

난 그냥 내 창에서 루트 픽스맵의 일부를 복사 할 수 있습니다

xcb_copy_area_checked(backbone.connection, 
      rootpix, 
      my_window, 
      graphic_context, 
      x, y, 
      0, 0, 
      width, height) 

그것은 내가 확실하지 않다 경우에도 작동 그것을하는 가장 좋은 방법입니다.