2016-11-13 3 views
0

私はしばらくこの問題について調査してきました。私はクロスプラットフォームプログラムを作っています。私はWindows APIでアニメーションカーソルをロードする方法と、実行時に生のビットマップデータからカーソルを作成する方法を理解しました。しかし、私は自分のUnix/Linuxビルドのために、X11のための良い文書を見つけることができません。私はXRender拡張関数XRenderCreateCursorとXRenderCreateAnimCursorをこのドキュメントhttps://www.x.org/releases/X11R7.6/doc/libXrender/libXrender.txtから使用する必要があることを知っていますが、これらの関数の使用方法はわかりません。生データからX11でカーソルを作成する方法C++

また、RAW画像データはARGB形式であり、できるだけこれらのカーソルでアルファチャンネルをサポートしたいと考えています。

X11とXRender(またはXCursor)ライブラリを使用して静的なカーソルと静的なアニメーションを作成する方法と、カーソルをどのX11ウィンドウでも使用できるようにする方法を教えてください。

ありがとうございます!

PS。

自分のプログラムで使用しているGuiのクロスプラットフォームのオープンソースライブラリを編集しています。この機能をlibaryに追加しようとしていますが、X11でプログラミングするのに慣れていません。

+0

[Qt](http://qt.io)のようなツールキットを使用することを強くお勧めします。 X11は本当に複雑ですが、それ以上のことを習得するには何ヶ月も必要です。そして、それは時代遅れになっています(おそらくWaylandに置き換えられます)。 –

答えて

0

Xについては、何も簡単です。

まず、specification of the X render extensionを確認します。

アニメーションカーソルを作成する手順は次のとおりです。

  1. まず、あなたはCreatePictureを使用して、アニメーションカーソルの各フレームのPICTUREを作成する必要があります。

  2. CreateCursorを使用して、それぞれPICTUREからCURSORを作成します。 CreateCursorCURSORハンドルを返します。

  3. はその後、あなたはすべてのフレームのためのすべてのCURSORのリストを取り、その後、アニメーションカーソルを表す単一CURSORを作成するためにCreateAnimCursorを使用しています。

これはすべて、各フレームのPICTUREを作成することに帰着します。 PICTUREは、DRAWABLEPICTFORMATCreatePictureを使用して作成されます。 DRAWABLEPIXMAPで、カーソルフレームの実際のビットマスクはPICTFORMATで、赤、緑、緑のチャネルを表すpixmapのチャネルを指定します。QueryPictformatから返された列挙PICTFORMATのいずれかでなければなりません。

詳細については、前述のXレンダリング拡張仕様を参照してください。

関連する問題