2016-11-13 54 views
0

我一直在尋找這個問題一段時間。我正在製作一個跨平臺程序,並且我已經想出瞭如何使用Windows API加載動畫光標以及如何在運行時從原始位圖數據創建光標。不過,我無法爲我的程序的Unix/Linux版本找到有關X11的良好文檔。我知道我需要使用本文檔https://www.x.org/releases/X11R7.6/doc/libXrender/libXrender.txt中的XRender擴展函數,XRenderCreateCursor和XRenderCreateAnimCursor,但我不知道如何使用這些函數,現在文檔現在顯示了任何示例。如何在X11中從原始數據創建光標C++

此外,原始圖像數據是ARGB格式,我希望如果可能的話使用這些遊標支持Alpha通道。

有人能告訴我如何使用X11和XRender(或XCursor)庫來創建一個遊標,靜態和動畫,並可能如何做,所以遊標可以用於任何X11窗口。

謝謝!

PS。

我正在編寫一個開源的libary,用於我的程序中使用的Gui,我試圖將這個功能添加到libary中,但我不習慣使用X11進行編程。

+0

我強烈建議使用像[Qt](http://qt.io)這樣的工具包。 X11真的很複雜,你需要幾個月才能掌握更多。它正在變得過時(可能被Wayland所取代)。 –

回答

0

談到X,沒有什麼是簡單的。

首先,查看specification of the X render extension

創建動畫光標的步驟如下。

  1. 首先,你需要創建動畫光標的每一幀PICTURE,使用CreatePicture

  2. 使用CreateCursor從每個PICTURE創建一個CURSORCreateCursor返回一個CURSOR句柄。

  3. 然後,您將所有幀的所有CURSOR s的列表,然後使用CreateAnimCursor創建一個表示動畫光標的單個CURSOR

這一切都歸結爲爲每一幀創建PICTURE。 A PICTURE使用來自DRAWABLEPICTFORMATCreatePicture創建。 DRAWABLE將是PIXMAP與光標幀的實際位掩碼,PICTFORMAT指定位圖中的哪些通道表示紅色,綠色和綠色通道,並且必須是從QueryPictformat返回的枚舉的PICTFORMAT之一。

欲瞭解更多信息,請參閱上述X渲染擴展規範。