如何从原始数据 C++ 在 X11 中创建游标
How to create a cursor in X11 from raw data c++
我一直在搜索这个问题一段时间。我正在制作一个跨平台程序,我已经弄清楚如何使用 windows API 加载动画光标以及如何在 运行 时间内从原始位图数据创建光标。但是,对于我的 Unix/Linux 程序构建,我找不到 X11 的良好文档。我知道我需要使用本文档中的 XRender 扩展函数、XRenderCreateCursor 和 XRenderCreateAnimCursor https://www.x.org/releases/X11R7.6/doc/libXrender/libXrender.txt,但我不知道如何使用这些函数,文档现在没有显示任何示例。
此外,原始图像数据是 ARGB 格式,如果可能的话,我希望这些光标支持 Alpha 通道。
有人可以告诉我如何使用 X11 和 XRender(或 XCursor)库来创建静态和动画光标,以及如何创建光标可以与任何 X11 一起使用 window .
谢谢!
PS.
我正在为我的程序使用的 Gui 跨平台编辑一个开源库,我正在尝试将此功能添加到库中,但我不习惯使用 X11 进行编程。
说到 X,没有什么是简单的。
首先,回顾specification of the X render extension。
创建动画光标的步骤如下。
首先需要为动画光标的每一帧创建一个PICTURE
,使用CreatePicture
.
使用 CreateCursor
从每个 PICTURE
创建一个 CURSOR
。 CreateCursor
returns一个CURSOR
句柄。
然后,您获取所有帧的所有 CURSOR
的列表,然后使用 CreateAnimCursor
创建一个表示动画的 CURSOR
光标.
这一切都归结为为每一帧创建一个 PICTURE
。 PICTURE
是使用 DRAWABLE
和 PICTFORMAT
中的 CreatePicture
创建的。 DRAWABLE
将是带有光标帧实际位掩码的 PIXMAP
,PICTFORMAT
指定像素图中的哪些通道代表红色、彩色和绿色通道,并且必须是从 QueryPictformat
.
返回的枚举 PICTFORMAT
s
有关详细信息,请参阅上述 X 渲染扩展规范。
我一直在搜索这个问题一段时间。我正在制作一个跨平台程序,我已经弄清楚如何使用 windows API 加载动画光标以及如何在 运行 时间内从原始位图数据创建光标。但是,对于我的 Unix/Linux 程序构建,我找不到 X11 的良好文档。我知道我需要使用本文档中的 XRender 扩展函数、XRenderCreateCursor 和 XRenderCreateAnimCursor https://www.x.org/releases/X11R7.6/doc/libXrender/libXrender.txt,但我不知道如何使用这些函数,文档现在没有显示任何示例。
此外,原始图像数据是 ARGB 格式,如果可能的话,我希望这些光标支持 Alpha 通道。
有人可以告诉我如何使用 X11 和 XRender(或 XCursor)库来创建静态和动画光标,以及如何创建光标可以与任何 X11 一起使用 window .
谢谢!
PS.
我正在为我的程序使用的 Gui 跨平台编辑一个开源库,我正在尝试将此功能添加到库中,但我不习惯使用 X11 进行编程。
说到 X,没有什么是简单的。
首先,回顾specification of the X render extension。
创建动画光标的步骤如下。
首先需要为动画光标的每一帧创建一个
PICTURE
,使用CreatePicture
.使用
CreateCursor
从每个PICTURE
创建一个CURSOR
。CreateCursor
returns一个CURSOR
句柄。然后,您获取所有帧的所有
CURSOR
的列表,然后使用CreateAnimCursor
创建一个表示动画的CURSOR
光标.
这一切都归结为为每一帧创建一个 PICTURE
。 PICTURE
是使用 DRAWABLE
和 PICTFORMAT
中的 CreatePicture
创建的。 DRAWABLE
将是带有光标帧实际位掩码的 PIXMAP
,PICTFORMAT
指定像素图中的哪些通道代表红色、彩色和绿色通道,并且必须是从 QueryPictformat
.
PICTFORMAT
s
有关详细信息,请参阅上述 X 渲染扩展规范。