2014-05-13 41 views
0

我的機器上的視覺效果深度值爲24.是否可以創建較低深度的X窗口(例如16)? 如果是的話如何?任何指向示例代碼的指針都會很有用。創建比VisualInfo更小深度的窗口

XSetWindowAttributes attrs; 

attrs.colormap = XCreateColormap(dpy, XDefaultRootWindow(dpy), visual, AllocNone); 
attrs.background_pixel = 0; 
attrs.border_pixel = 0; 

XCreateWindow(dpy, parent, 10, 10, 150, 100, 0, 16, InputOutput, 
       visual, CWBackPixel | CWColormap | CWBorderPixel, &attrs); 

上面的代碼給了我錯誤的匹配錯誤。可視參數具有24位深度。

在此先感謝。

回答

1

並非所有可能的深度都可用於所有服務器。運行xdpyinfo | grep depths以查看您的支持,或者從您的應用程序中調用XListDepths

例如,在我的家用計算機上,X服務器支持16的深度,但在我的工作計算機上它不支持。

編輯窗口深度必須與視覺深度完全匹配,否則會發生BadMatch錯誤。

XListDepths可用於查詢給定深度的哪些視覺支持。如果所有視覺效果的深度均爲24,則每個視窗的深度必須爲24.並非所有列出的深度都可以作爲給定服務器上的視覺效果來實現。

+0

我同意。我只能在我的機器上看到24位深度的支持。那麼「最大深度」的含義究竟是什麼?從我讀到的,XCreateWindow()的深度值可以小於最大深度。 – maverick9888

+0

「XCreateWindow()中的深度值可能小於最大深度」 - 僅當它位於服務器支持的深度列表中時。我的工作服務器支持深度爲24,32,8,4,1。我可以創建深度爲8或24的窗口,但不是16. –

+0

Theres有點混亂。在 'xdpyinfo' 輸出表示 - 屏幕#0: 深度(7):24,1,4,8,15,16,32 但是,所有的視覺效果有 - 深度:24個平面 是否仍然可能創建一個深度小於最大深度的窗口,即使我沒有16位深度的「VISUAL」? – maverick9888