gpt4 book ai didi

c++ - 如何从原始数据 C++ 在 X11 中创建游标

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:05 26 4
gpt4 key购买 nike

我一直在寻找这个问题一段时间。我正在制作一个跨平台程序,我已经弄清楚如何使用 Windows API 加载动画光标以及如何在运行时从原始位图数据创建光标。但是,对于我的程序的 Unix/Linux 构建,我找不到 X11 的良好文档。我知道我需要使用此文档中的 XRender 扩展函数 XRenderCreateCursor 和 XRenderCreateAnimCursor https://www.x.org/releases/X11R7.6/doc/libXrender/libXrender.txt但我不知道如何使用这些功能,文档现在没有显示任何示例。

原始图像数据也是 ARGB 格式,如果可能的话,我想用这些光标支持 Alpha channel 。

谁能告诉我如何使用 X11 和 XRender(或 XCursor)库来创建静态和动画光标,以及如何创建光标才能在任何 X11 窗口中使用。

谢谢!

附言。

我正在为我的程序使用的 Gui 跨平台编辑一个开源库,我正在尝试将此功能添加到库中,但我不习惯使用 X11 进行编程。

最佳答案

当谈到 X 时,没有什么是简单的。

首先,查看 specification of the X render extension .

创建动画光标的步骤如下。

  1. 首先,您需要使用 CreatePicture 为动画光标的每一帧创建一个 PICTURE

  2. 使用CreateCursor 从每个PICTURE 创建一个CURSORCreateCursor 返回一个 CURSOR 句柄。

  3. 然后,您获取所有帧的所有 CURSOR 的列表,然后使用 CreateAnimCursor 创建单个 CURSOR 表示动画光标。

这一切都归结为为每一帧创建一个 PICTUREPICTURE 使用 CreatePictureDRAWABLEPICTFORMAT 创建。 DRAWABLE 将是具有光标帧实际位掩码的 PIXMAPPICTFORMAT 指定像素图中的哪些 channel 代表红色、颜色和绿色 channel ,并且必须是从 QueryPictformat 返回的枚举 PICTFORMAT 之一。

有关详细信息,请参阅上述 X 渲染扩展规范。

关于c++ - 如何从原始数据 C++ 在 X11 中创建游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com