gpt4 book ai didi

C++ (LINUX) 使用 DevIL 设置 X11 窗口背景

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:09 27 4
gpt4 key购买 nike

我正在尝试为使用 Xlib 创建的其中一个窗口设置背景图像。我希望图像为 JPEG 或 PNG。我下载了 DevIL(我更喜欢使用它,因为它支持很多格式)。

那么,我的问题是,我该怎么做?我找不到任何具体的教程或帮助。
我了解如何使用 DevIL 将图像加载到流中,但如何将其放在窗口中?我在这里找到了答案:Load image onto a window using xlib但我不知道应该如何以及哪个函数接收图像字节。据我所知,我应该有一个 XImage 来保存所有图像,并且我将与 XPutImage 一起使用。我不明白的是如何将图像的字节从 DevIL 发送到 XImage。

有人知道任何有用的页面或关于我应该如何做的一些线索吗?
谢谢!

最佳答案

用于创建XImage 的Xlib 函数是XCreateImage ,它的用法如下所示(您可以在链接中阅读完整说明):

XImage *XCreateImage(display, visual, depth, format, offset, data, 
width, height, bitmap_pad, bytes_per_line)

您的特定问题的相关参数是data,一个char*,它指向您将图像数据保存在DevIL 中的位置。有了这个,您应该能够按照步骤进行操作 in the other answer you already found .

编辑添加:

您仍然必须告诉 DevIL 如何格式化您的图像数据,以便 XCreateImage 可以理解它。例如,下面的一对函数调用将创建一个正确显示的 XImage:

ilCopyPixels(
0, 0, 0,
image_width, image_height, 1,
IL_BGRA, IL_UNSIGNED_BYTE,
image_data
);

// ...

XImage* background = XCreateImage(
display,
XDefaultVisual(display, XDefaultScreen(display)),
XDefaultDepth(display, XDefaultScreen(display)),
ZPixmap,
0,
image_data,
image_width,
image_height,
32,
0
);

,如果您改为选择 IL_RGBA,颜色将会关闭!

关于C++ (LINUX) 使用 DevIL 设置 X11 窗口背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12474854/

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